htaccess与wordpress的前进冲突

时间:2014-09-01 10:23:20

标签: regex wordpress apache .htaccess mod-rewrite

我希望将旧网站的所有目录转发到新域,以便客户端仍然可以访问旧网站数据(即wordpress网站的后端区域)以及维护访问权限由于其所包含的内容而导致特定目录。

我设置的规则肯定是独立运作的,但是当与wordpress的规则结合时似乎有一个问题 - 我对htaccess的东西不是很好,所以我希望它是明显和愚蠢的东西。

这是完整的htaccess(稍微编辑):

# 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

<IfModule mod_rewrite.c>
    RewriteRule !^(wp-admin(/.*)?|wp-login(/.*)?|shop2(/.*)?)$ http://newdomain.tld [R=301,L]
</IfModule>

/ shop2 /目录的工作方式完全符合预期,即/ shop2 /的所有流量都保留在此域中,并且不会转发。

然而,我对wp-admin和wp-login都有一些奇怪的行为。 wp-admin将用户转发到新域,忽略新规则,但它确实包含'redirect_to'URL参数,就像在实际的wp-admin页面上一样。 wp-login没有转发,但它加载了一个没有样式的404页面。

我假设规则中存在冲突?

1 个答案:

答案 0 :(得分:1)

你的规则如下:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule !^((wp-admin|shop2)(/.*)?|wp-login\.php)$ http://newdomain.tld/ [R=301,L,NC]

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

# END WordPress

通常在内部WP规则之前保留重定向规则。