Перенаправление htaccess с любого субдомена в другой домен и из каталога на URL запроса - PullRequest
1 голос
/ 17 апреля 2011

Я пытаюсь использовать htaccess для перенаправления любого субдомена и корня одного домена в другой домен. Пример

anysub.mysite.com или mysite.com перенаправляет на www.anotheriste.com

, а также mysite.com/stuffhere to www.anothersite.com/feed?v=stuffhere

Таким образом, все, что не является подкаталогом, перенаправляется в другой домен, а все, что является подкаталогом, перенаправляется на URL со строкой запроса. Не могу понять это. Одно правило перезаписи перезаписывает другое.

Edit: Это то, что я получил на работу

Options +FollowSymlinks 
RewriteEngine on
RewriteRule ^$ http://www.site.com [R=301,L]

RewriteCond  %{REQUEST_FILENAME} !-f
RewriteCond  %{REQUEST_FILENAME} !-d
RewriteCond  %{REQUEST_URI} ^/*\/?
RewriteRule ^(.*)$ http://www.site.com/feed?v=$1 [R=301,L]

1 Ответ

2 голосов
/ 17 апреля 2011

Попробуйте добавить эти правила в ваш файл .htacccess:

RewriteEngine on
Options +FollowSymlinks -MultiViews

# handles http redirect sub-dir
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{SERVER_PORT} =80
RewriteCond %{HTTP_HOST} ^(.+\.)?mysite\.com$ [NC] 
RewriteRule ^/?(.*)$ http://www.anotheriste.com/feed?v=$1 [R=301,L,QSA,NE]

# handles http redirect non sub-dir
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{SERVER_PORT} =80
RewriteCond %{HTTP_HOST} ^(.+\.)?mysite\.com$ [NC] 
RewriteRule ^/?(.*)$ http://www.anotheriste.com/$1 [R=301,L,QSA,NE]

# handles https redirect sub-dir
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{SERVER_PORT} =443
RewriteCond %{HTTP_HOST} ^(.+\.)?mysite\.com$ [NC] 
RewriteRule ^/?(.*)$ https://www.anotheriste.com/feed?v=$1 [R=301,L,QSA,NE]

# handles https redirect non sub-dir
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{SERVER_PORT} =443
RewriteCond %{HTTP_HOST} ^(.+\.)?mysite\.com$ [NC] 
RewriteRule ^/?(.*)$ https://www.anotheriste.com/$1 [R=301,L,QSA,NE]

R = 301 будет перенаправлять со статусом https 301

L сделает последнее правило

NE isбез экранирования строки запроса

QSA добавит существующие параметры запроса

$ 1 - это ваш REQUEST_URI

...