1

我试图阻止 Wordpress 弄乱/exampleand /example2,因为我有一些高级的东西(例如密码保护),Wordpress 正在破坏并错误地向其发送 404 消息。

这是我的.htaccess:

DirectoryIndex index.html index.php parking-page.html

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

# END WordPress

这可以从这些文件夹中阻止 Wordpress,但现在 Wordpress 将不再捕获错误的 URL,除非它们中有一个/。例如,Wordpress 将捕获:

mydomain.com/something/
mydomain.com/something/anything
mydomain.com/something/anything.html

但它不会抓住

mydomain.com/something
mydomain.com/something.html

(即使mydomain.com/something是一个有效的 WP 页面,如果我没有 %{REQUEST_URI} 行)

后一种类型的 URL 被给予服务器 404 消息。除了这两个目录之外,我怎样才能让 Wordpress 保持在所有内容的循环中?

4

1 回答 1

0

我已经找到了解决方案(hat-tip)。这与这个问题完全相同,除了他的问题是有问题的目录使用 WebDAV,我的问题是目录使用密码保护。

本质上,默认的 WordPress 规则应该按原样工作——但是当文件夹受密码保护时它们会中断。这些应该将其作为文件 ( -f) 或目录 ( -d) 捕获的规则失败:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

它没有将我的受密码保护的目录作为文件或目录捕获,因为它卡在密码提示符处——而且我没有任何错误页面可以将其发送到。因此,解决方案是设置错误处理:

ErrorDocument 401 /err.txt
ErrorDocument 403 /err.txt

只需将这两行放在所有 WordPress 内容之上并创建/err.txt. 这样它就可以登陆文件,并且默认的 WP 代码可以很好地工作。

于 2013-08-09T23:38:17.663 回答