.htaccess RewriteRule例外

时间:2017-10-17 21:39:08

标签: apache .htaccess

我的.htaccess文件中有以下规则。问题是当我尝试导航到site.com/news/wp-admin/时,它最终会进入重定向循环。从我已阅读的其他问题/答案中,您可以使用RewriteCond %{REQUEST_URI} !^/news/wp\-admin/创建例外,但这不能解决问题。它仍然重定向。我不确定我做错了什么。

以下.htaccess位于我的根目录中。

Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteOptions inherit

RewriteCond %{REQUEST_URI} !^/news/wp\-admin/
RewriteRule ^([a-z0-9\-]+)/?$ index.php?p=$1 [L,NC,QSA,B]
RewriteRule ^([a-z0-9\-]+)/(option1|option2|option3)/?$ index.php?p=$1&type=$2 [L,NC,QSA,B]
RewriteRule ^([a-z0-9\-]+)/(option1|option2|option3)/(.+)$ index.php?p=$1&type=$2&q=$3 [L,NC,QSA,B]

如果我发表评论RewriteRule ^([a-z0-9\-]+)/?$ index.php?p=$1 [L,NC,QSA,B]它有效,但会破坏我网站的其余部分。

这是我的WordPress所在的.htaccess中的/news/

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

# END WordPress

1 个答案:

答案 0 :(得分:0)

我假设您拥有Apache 2,这意味着您必须这样做:

RewriteCond %{REQUEST_URI} !^/?news/wp-admin/

在Apache 2中没有前导/因此我们将其设为/?可选 并且没有必要逃避-因为它没有特殊意义。

修改

额外删除RewriteOptions inherit会执行此操作,因为使用此选项可以将相同的规则应用于子目录,这将导致您的循环