2014-09-01 83 views
1

我期待转发一个旧网站的几个目录到一个新的域,以便客户仍然可以访问旧网站的数据(即后端区域的WordPress的网站)以及由于其内容而保持对特定目录的访问。htaccess转发冲突与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将用户转发到新域,忽略新规则,但是它包含了像实际wp-admin页面上那样的'redirect_to'URL参数。 wp-login不会转发,但会加载一个无风格的404页面。

我假设规则中存在冲突?

回答

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规则重定向规则。

+1

这是合乎逻辑的 - 我会试一试! – 2014-09-01 10:27:05

+0

似乎没有什么区别于我能说的。我确定要清除所有的网站数据(因为我知道htaccess的变化可能因缓存等原因难以测试)。 – 2014-09-01 10:32:04

+0

你在浏览器中输入了什么URL,但没有重定向到http://newdomain.tld/ '?并且'/ wp-admin /'是否也有.htaccess? – anubhava 2014-09-01 10:33:49