0

我遇到的问题与此处描述的问题非常相似,但从未解决。

我有一个带有子域的 WordPress 多站点安装,我正在尝试让旧 URL 重定向到新 URL。

基本上,我正在使用

RewriteCond %{HTTP_HOST}

以每个子域为目标,后面跟着一批 RewriteRules。

这是我的代码的一小段:

# Rewrite rules for French site
RewriteCond %{HTTP_HOST} ^fr.nomacorc.com$ [nc]
RewriteRule ^home\.php$ http://fr.nomacorc.com/ [R=301,NC,L]
RewriteRule ^aboutus\.php$ http://fr.nomacorc.com/propos-de-nous/ [R=301,NC,L]
RewriteRule ^ourclosures\.php$ http://fr.nomacorc.com/bouchons-pour-le-vin/ [R=301,NC,L]

# Rewrite rules for German site
RewriteCond %{HTTP_HOST} ^de.nomacorc.com$ [nc]
RewriteRule ^home\.php$ http://de.nomacorc.com/ [R=301,NC,L]
RewriteRule ^aboutus\.php$ http://de.nomacorc.com/uber-uns/ [R=301,NC,L]
RewriteRule ^ourclosures\.php$ http://de.nomacorc.com/weinverschlusse/ [R=301,NC,L]

我想要发生的事情是让 de.nomacorc.com/aboutus.php 重定向到 de.nomacorc.com/uber-uns,但它重定向到 fr.nomacorc.com/propos-de-nous/。ourclosures.php 重定向也发生了同样的事情。

我对这段代码做错了什么?

4

1 回答 1

3

我在另一个线程上找到了答案。

我需要做的是将 RewriteRules 组链接到上述 RewriteCond。这样做的方法描述得非常好:

- Negate the condition (prepend it with !)
- If you have multiple RewriteConds:
- Change logical ANDs in the Conds to ORs and vice versa.
- Add a skipping rewrite rule in front of all rules that you want to tie to the condition(s), set the S parameter to the number of Rule lines to be skipped.

所以这是我更正的代码:

# Rewrite rules for French site
RewriteCond %{HTTP_HOST} !^fr.nomacorc.com$ [nc]
RewriteRule .? - [S=3]
RewriteRule ^home\.php$ http://fr.nomacorc.com/ [R=301,NC,L]
RewriteRule ^aboutus\.php$ http://fr.nomacorc.com/propos-de-nous/ [R=301,NC,L]
RewriteRule ^ourclosures\.php$ http://fr.nomacorc.com/bouchons-pour-le-vin/ [R=301,NC,L]

# Rewrite rules for German site
RewriteCond %{HTTP_HOST} !^de.nomacorc.com$ [nc]
RewriteRule .? - [S=3]
RewriteRule ^home\.php$ http://de.nomacorc.com/ [R=301,NC,L]
RewriteRule ^aboutus\.php$ http://de.nomacorc.com/uber-uns/ [R=301,NC,L]
RewriteRule ^ourclosures\.php$ http://de.nomacorc.com/weinverschlusse/ [R=301,NC,L]

我希望这可以帮助其他可能遇到同样问题的人!

于 2014-09-24T14:22:37.277 回答