阻止通过HTAccess访问所有帖子/标签URI

时间:2020-10-20 作者:jamesgarrett

我想阻止访问post/tag/example-here WordPress网站上的页面,但以下内容不起作用。这个.htaccess 正在分析access文件。它位于站点的根(即public_html) 在一个普通的cPanel帐户上。我试过有无前导斜杠。我不明白为什么它不起作用。

RewriteCond %{REQUEST_URI} ^post/tag/
RewriteRule .* - [F]
   
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

1 个回复
最合适的回答,由SO网友:MrWhite 整理而成

RewriteCond %{REQUEST_URI} ^post/tag/
RewriteRule .* - [F]
TheREQUEST_URI 服务器var确实以斜杠开头(这是一个完整的根相对URL路径),尽管您确实说过您已经尝试过了;带或不带前导斜杠;,如果你指的就是这个/post 是URL路径中的第一个路径段。

但是,您不需要额外的RewriteCond 可以(并且应该)在RewriteRule 而不是指令。例如:

RewriteRule ^post/tag/ - [F]
在这种情况下,上没有斜杠前缀RewriteRule 图案

如果仍然失败,请尝试匹配THE_REQUEST 相反,它包含请求头的第一行,并且不会被其他重写修改(不同于REQUEST_URI 和匹配的URL路径RewriteRule 指令)。

例如:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,7}\\s/post/tag/
RewriteRule ^ - [F]
THE_REQUEST 将包含以下格式的字符串:

GET /post/tag/example-here HTTP/1.1
仍不工作。。。然后确保没有自定义403ErrorDocument 即通过WordPress路由请求。如果您自己没有定义任何内容,那么这仍然可以在服务器配置中定义(由您的主机),您可以在中使用以下命令将其重置为Apache默认值.htaccess:

ErrorDocument 403 default

相关推荐

在记事本中编辑后无法上载.htaccess

将站点从http切换到https,但在.htaccess 添加后无法成功上载文件RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 在文件中使用记事本强制执行安全页面。格式为UTF-8。有什么想法吗?