Wordpress RewriteRule与.passwd冲突

时间:2012-12-14 02:42:00

标签: wordpress .htaccess mod-rewrite .htpasswd

在我的root .htaccess文件中,我有以下Wordpress代码:

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]

与标准代码略有不同,因为Wordpress文件位于“wordpress”目录中,但重写仍然相对于域根目录显示。例如,博客文章可以称为site.com/this-is-a-blog-post.php,重写也可以。

当我想使用htpasswd来保护网站上的目录时,这非常适用 。如果我将以下代码添加到任何目录中的.htaccess文件中,则在尝试浏览到该目录时会得到404:

AuthName "Private"
AuthUserFile "/home/passwd"
AuthType Basic
require valid-user

当Wordpress重写代码的最后一行被注释掉时,此代码可以正常工作,但Wordpress代码完好无损,我的密码保护目录给出了404.

所以我两个.htaccess文件之间存在冲突。我曾尝试编写一堆RewriteCond来尝试使用已应用的密码排除子目录,但无法确定它。

1 个答案:

答案 0 :(得分:1)

好的,墨菲定律,在发布问题之后就解决了!

Wordpress重写所需的额外条件是:

RewriteCond %{REQUEST_URI} (/|\.htm|\.php|\.html|#.*|\?.*|/[^.]*)$  [NC]

所以完整的Wordpress重写代码变为:

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (/|\.htm|\.php|\.html|#.*|\?.*|/[^.]*)$  [NC]
RewriteRule . /wordpress/index.php [L]

现在我将完成我的谦逊派。