.htaccess,我可以阻止所有以“/index.php?action=”开头的请求吗?
.htaccess, can I block all requests starting with exactly "/index.php?action="
是否有 .htacces 方法来阻止所有以 /index.php?action=
开头的请求?
我想通了:
RewriteCond %{QUERY_STRING} \baction=\b [NC]
RewriteRule ^ - [F]
但是如何将 /index.php?
部分放在该模式的前面。我尝试了很多,但它没有用,只有这部分模式还在 URL
中的其他地方阻塞了 &action= 参数
希望能帮到你。提前谢谢了,
妮可
您可以使用 THE_REQUEST
变量来匹配完整的 URL 并像这样阻止它:
RewriteCond %{THE_REQUEST} /index\.php\?action= [NC]
RewriteRule ^ - [F]
RewriteCond %{QUERY_STRING} \baction=\b [NC]
RewriteRule ^ - [F]
But how do I put the part /index.php? in front of that pattern.
RewriteRule
模式(即您示例中的^
)与URL(减去斜杠前缀)。所以,你可以这样做:
RewriteCond %{QUERY_STRING} ^action= [NC]
RewriteRule ^index\.php$ - [NC,F]
这匹配任何以 /index.php?action=
(case-insensitive) 开头的请求。
您最初使用的正则表达式(即 ^
)对所有内容都是成功的,因此将匹配任何以 /<anything>?action=
.
开头的 URL
此方法与检查 THE_REQUEST
(如@anubhava 的回答)之间的区别在于,这也会阻止已在内部重写为 /index.php?action=
的请求,而 THE_REQUEST
只会阻止来自客户端的直接请求。
是否有 .htacces 方法来阻止所有以 /index.php?action=
开头的请求?
我想通了:
RewriteCond %{QUERY_STRING} \baction=\b [NC]
RewriteRule ^ - [F]
但是如何将 /index.php?
部分放在该模式的前面。我尝试了很多,但它没有用,只有这部分模式还在 URL
希望能帮到你。提前谢谢了, 妮可
您可以使用 THE_REQUEST
变量来匹配完整的 URL 并像这样阻止它:
RewriteCond %{THE_REQUEST} /index\.php\?action= [NC]
RewriteRule ^ - [F]
RewriteCond %{QUERY_STRING} \baction=\b [NC] RewriteRule ^ - [F]
But how do I put the part /index.php? in front of that pattern.
RewriteRule
模式(即您示例中的^
)与URL(减去斜杠前缀)。所以,你可以这样做:
RewriteCond %{QUERY_STRING} ^action= [NC]
RewriteRule ^index\.php$ - [NC,F]
这匹配任何以 /index.php?action=
(case-insensitive) 开头的请求。
您最初使用的正则表达式(即 ^
)对所有内容都是成功的,因此将匹配任何以 /<anything>?action=
.
此方法与检查 THE_REQUEST
(如@anubhava 的回答)之间的区别在于,这也会阻止已在内部重写为 /index.php?action=
的请求,而 THE_REQUEST
只会阻止来自客户端的直接请求。