我需要从网址中删除特殊字符。如果存在这些特殊字符,我需要重定向到自定义错误页面。
我htaccess
文件中的规则是:
RewriteEngine on
# Rewrite condition: The URL must redirect to a 403 error if the URL contains any special characters (!@$%^&*()_+|~`{}\[\]";'<>,.\/)
RewriteCond %{THE_REQUEST} (.+_{}~\[\]\(\);,@\!\'\s&$\^)$ [NC] # Characters like :"|<>*% cannot be disallowed?
RewriteRule .* - [F,S,L]
#Error page handeller
ErrorDocument 400 /example/errordocs/error-code.php
ErrorDocument 401 /example/errordocs/error-code.php
ErrorDocument 403 /example/errordocs/error-code.php
ErrorDocument 404 /example/errordocs/error-code.php
ErrorDocument 500 /example/errordocs/error-code.php
ErrorDocument 501 /example/errordocs/error-code.php
ErrorDocument 502 /example/errordocs/error-code.php
我无法重定向以下特殊字符:*|"<>
如何编写上面的RewriteCond
语句,以便请求重定向正确?截至目前,如果网址包含以下任何字符:*|"<>
,则会将其重定向到预先加载Apache
的默认错误页面。
答案 0 :(得分:0)
您可以使用此规则阻止包含这些字符的所有网址:
RewriteCond %{THE_REQUEST} [_{}~\[\]();,@!'&$^<>"|*]|%3C|%3E|%22|%27
RewriteRule ^ - [F]
您可以在此字符类[...]
中添加要阻止的更多字符。