我有一个WordPress部署,我想忽略对存在的资源(即文件和目录)的所有外部访问,但我想接受所有内部重定向。我们的想法是不向外部用户透露/wp*
存在。我知道我必须重命名wp-content才能使用(以及调整wp-config.php
中的一些内容,但最重要的是:
如何将.htaccess文件配置为仅接受内部重定向并忽略所有其他请求?
我认为%{ENV_VAR}
某处可以让我创建一个RewriteCond,但是我无法在apache文档中找到它。
答案 0 :(得分:1)
使外部访问成为第一条规则,并使其失败。然后执行内部重定向。
RewriteRule ^foo/?.* - [R=404,L]
RewriteRule ^bar/(.*) foo/$1 [L]
答案 1 :(得分:1)
我尝试了IVA和hakre建议的方法。他们没有按照我的努力工作。我使用它的方式类似于hakre建议的方式,但我没有定义自己的变量,而是使用已定义的变量:%{ENV:REDIRECT_STATUS}
。做类似的事情:
# If the resource requested is a `wp*` file or directory AND it's NOT from a redirect
# (notice that the 'match' is an empty string, poop to a 403.
RewriteCond %{REQUEST_FILENAME} wp-.*$ [NC]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
RewriteCond %{REQUEST_FILENAME} -d [NC]
RewriteRule .* - [F,L]
答案 2 :(得分:0)
mod_rewrite supports environment variables。 RewriteCond的符号为%{ENV:variable}
,您可以使用env|E=VAR:VAL'
标志在RewriteRule中设置它们。完成它,有效。
要返回一个普通的404来“隐藏”某些东西,你必须在wordpress中实现自己的处理。例如。将那些被发现为404 / File Not Found的屏蔽请求发送到worpdress中,使其返回404错误页面。
但是你必须知道你做了什么。例如。某些插件无法与您要实现的设置一起使用,因为前提条件是客户端必须能够将请求发送到/wp-content
和/wp-admin
中的位置。
除此之外,您将无法隐藏您的网站使用wordpress运行。需要提供示例的Javascript文件。您需要将这些映射到.htaccess中的新URL以及过滤输出以进行文件的实际映射。
即使你这样做(例如通过输出缓冲区重写URL),你也会想出一个可以让你看到你正在使用wordpress的直觉。