Перепаркованный домен перенаправить в подпапку - PullRequest
3 голосов
/ 05 июля 2011

У меня 2 домена:

  • maindomain.com
  • parkeddomain.com

До получения домена parkeddomain.com мой .htaccess был:

RewriteEngine on

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

Теперь, когда у меня есть новый домен, я хочу перенаправить посещения в подпапку: /park/ В общем, если следующий URI будет отображать ту же самую страницу:

Моя попытка сделать правило .htaccess была:

RewriteEngine on

RewriteBase /

RewriteCond %{HTTP_HOST} ^(www.)?parkeddomain.com$ 
RewriteRule ^(.*)$ /park/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

Но по странной причине, предложение [L] парка RewriteRule генерирует внутренний 500 error, и у меня нет доступа к файлу журнала: (

Есть решение? спасибо:)

1 Ответ

8 голосов
/ 05 июля 2011

Вероятно, у вас ошибка 500, потому что ваше правило входит в цикл перезаписи. Вместо этого попробуйте это правило:

RewriteCond %{HTTP_HOST} ^(www.)?parkeddomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.maindomain.com/park/$1 [R=302,L]
  1. Это 302 временное перенаправление (потому что ваш домен припаркован, и однажды вы можете решить фактически начать его использовать). Но если вы действительно хотите, можете сделать это 301 Постоянное перенаправление

  2. Правило будет работать, если пользователь заходит через parkeddomain.com (например, http://www.parkeddomain.com/hello).

Если вы не хотите перенаправлять (поэтому URL в браузере по-прежнему показывает http://www.parkeddomain.com/hello вместо http://www.maindomain.com/park/hello), используйте это вместо:

RewriteCond %{HTTP_HOST} ^(www.)?parkeddomain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/park/
RewriteRule ^(.*)$ /park/$1 [L]

UPDATE Это правило позволит переписывать даже такие URL-адреса: parkeddomain.com/park/index.php -> /park/park/index.php

RewriteCond %{HTTP_HOST} ^(www.)?parkeddomain\.com$ [NC]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{DOCUMENT_ROOT}/park/$1 -f
RewriteRule ^(.*)$ /park/$1 [L]

ОБРАТИТЕ ВНИМАНИЕ: Поскольку он использует %{ENV:REDIRECT_STATUS}, он может не работать на вашем хостинге (это используется для обнаружения цикла перезаписи, поэтому правило перезаписывается только один раз).

...