.htaccess重定向url中的特殊字符,同时允许某些url的某些字符

时间:2014-04-14 04:44:11

标签: apache .htaccess url redirect

我对.htaccess url重定向知之甚少。

如果网址中包含特殊字符,我想将网址重定向到400错误页面 同时在网址中允许使用?_-+=%&/等字符。

我正在尝试这种方式

RewriteRule ^([\W+]) /site/error/400/ [L]

这不起作用。

也尝试了以下方法。

RewriteCond %{REQUEST_URI} !(-[a-zA-Z0-9-]+\/) 
RewriteRule ^(.*)$ /site/error/400/ [QSA,R=301,L]

这样所有网址都会重定向到400错误页面。

请参阅并建议任何可能的方法来执行此操作

感谢。

更新

我想为这些类型的网址返回400错误

http://localhost/site/?//any special character here except ?_-+=%&/
http://localhost/site/section/?//any special character here except ?_-+=%&/
http://localhost/site/section/page.html?//any special character here except ?_-+=%&/
http://localhost/site/section/category/?//any special character here except ?_-+=%&/
http://localhost/site/section/category/?order=id&sort=desc&rpp=10&page=2//any special character here except ?_-+=%&/
http://localhost/site/download/category/redirct.php?Id=5//any special character here except ?_-+=%&/
http://localhost/site/buy/category/redirct.php?Id=5//any special character here except ?_-+=%&/

2 个答案:

答案 0 :(得分:1)

此规则应该有效:

RewriteCond %{QUERY_STRING} [^\w+=&/.-] [OR]
RewriteCond %{REQUEST_URI} [^\w+=%&/.-]
RewriteRule . /site/error/400/? [L,B,R=302]

答案 1 :(得分:0)

尝试这样的事情......那可能有用......

RewriteCond %{REQUEST_URI} !^/(download|/buy)$
RewriteRule ^([\W+]) /site/error/400/ [L]

Find examples here...