我希望将旧网站的所有目录转发到新域,以便客户端仍然可以访问旧网站数据(即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页面。
我假设规则中存在冲突?
答案 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规则之前保留重定向规则。