我对.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 ?_-+=%&/
答案 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]