HTACCESS URL带有正则义务



我需要阻止所有用特定URL做出的请求,例如

http://www.domain.est/-p-.html?slave_id=15265&osCsid=6j0ltvo8d9i8h30koahqusvua7

我尝试了

RewriteCond %{THE_REQUEST} /(/-p-.html)+(?slave_id=d{1,6})?(&osCsid=w{1,26})? [NC]
RewriteRule ^ - [F]

但行不通。我在哪里错了?

谢谢

这是一个更易于处理的版本,也应该更健壮:

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/-p-.html$ [NC]
RewriteCond %{QUERY_STRING} slave_id=[0-9]{1,6}
RewriteCond %{QUERY_STRING} osCsid=[0-9a-z]{1,26}
RewriteRule ^ - [F]

注意:查询args匹配模式不是绝对精确的,但对于几乎所有情况都应该足够强大...


显然,必须启用HTTP服务器重写模块。该规则将在HTTP服务器主机配置或动态配置文件(.htaccess)中起作用。如果您决定使用这样的动态配置文件,您还必须注意用主机配置中的AllowOverride指令对此类文件进行解释,并且该文件必须位于您的HTTP Hosts中配置的DocumentRoot文件夹中。


和一个常规提示:您应该始终更喜欢将此类规则放置在HTTP服务器主机配置中,而不是使用动态配置文件(" .htaccess")。众所周知,这些文件容易出错,难以调试,并且确实放慢了服务器。它们仅作为您无法控制主机配置的情况的最后一个选择(请阅读:真正便宜的托管服务提供商),或者如果您有一个依赖于编写自己的重写规则的应用程序(这是一个显而易见的安全噩梦)。

最新更新