У меня есть два домена, cshen.ca и cshen.net, оба указывают на одно и то же место.
Я пытаюсь сделать следующее с помощью mod_rewrite:
- cshen.net 301 перенаправляется на cshen.ca
- www.cshen.net или www.cshen.ca оба перенаправлены на cshen.ca
- путь после сохранения домена после перенаправления, например, www.cshen.net / foo / bar / будет перенаправлен на cshen.ca / foo / bar /
Я испробовал множество правил, но не могу заставить его работать.
RewriteCond %{HTTP_HOST} ^cshen\.net$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://cshen.ca/$1 [R=301,L]
Это выполняет первые два правила, но перенаправляет все обратно на домашнюю страницу и не сохраняет оставшуюся часть URL.
RewriteCond %{HTTP_HOST} ^cshen\.net$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^/(.*)$ http://cshen.ca/$1 [R=301,L]
Небольшое изменение и добавление косой черты '/' в RewriteRule сохраняет оставшуюся часть URL, но перенаправляется только www.cshen.ca . Ни cshen.net , ни www.cshen.net нигде не перенаправляются.
Я также попробовал Руководство Apache и использовал этот код:
RewriteCond %{HTTP_HOST} !^cshen\.ca [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://cshen.ca/$1 [L,R]
Я думал, что это будет работать, так как он должен перенаправить любой URL, который не cshen.ca , однако, как и второй фрагмент кода, он ничего не делает для cshen.net или www.cshen.net .
Я почти исчерпал идеи других вещей, чтобы попробовать. Буду признателен, если кто-нибудь сможет помочь!
Приложение: в случае, если это имеет значение, я использую красивые URL-адреса WordPress, и правила переписывания для этого:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Я пытался выставить свои правила до и после правил WordPress (когда я ставлю их раньше, я, конечно, добавлю RewriteEngine On перед моими правилами), это не имеет никакого значения.
Спасибо!