Как htaccess может перенаправить два хоста в подкаталог - PullRequest
0 голосов
/ 07 марта 2012

Как локальный и удаленный хосты могут перенаправлять root в подкаталог?

Локальный хост : domain.localhost
Удаленный хост : домен.com
Подкаталог : подкаталог

domain.localhost -> domain.localhost/subdir/<br>
domain.localhost/ -> domain.localhost/subdir/<br>
domain.com-> domain.com/subdir/<br>
www.domain.com -> www.domain.com/subdir/<br>

Options +FollowSymLinks
DirectoryIndex questions.php
RewriteEngine on

RewriteCond %{HTTP_HOST} ^domain\.localhost$
RewriteRule ^(.*)$ http://domain\.localhost/subdir/$1 [R=301,L]

RewriteCond %{REQUEST_URI} ^/$
RewriteRule (.*) http://www.domain.com/subdir/ [R=301,L]

Ответы [ 3 ]

1 голос
/ 22 марта 2012

Для этих принципов:

domain.localhost -> domain.localhost/subdir/
domain.localhost/ -> domain.localhost/subdir/
domain.com-> domain.com/subdir/

www.domain.com -> www.domain.com/subdir/

Вот точные rewriterules:

Options +FollowSymLinks
DirectoryIndex questions.php
RewriteEngine on

# domain.localhost -> domain.localhost/subdir/
RewriteCond %{HTTP_HOST} ^domain\.localhost$
RewriteRule (.*) /subdir/$1 [QSA,L]

# domain.com -> domain.com/subdir/
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$
RewriteRule (.*) /subdir/$1 [QSA,L]

Если это не работает, попробуйте без "/":

Options +FollowSymLinks
DirectoryIndex questions.php
RewriteEngine on

# domain.localhost -> domain.localhost/subdir/
RewriteCond %{HTTP_HOST} ^domain\.localhost$
RewriteRule (.*) /subdir$1 [QSA,L]

# domain.com -> domain.com/subdir/
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$
RewriteRule (.*) /subdir$1 [QSA,L]

Примечание: перенаправлять с помощью директивы [R] не нужно.Нет необходимости уточнять весь домен.

0 голосов
/ 22 марта 2012

Если вы не укажете полный URL, Mod Rewrite сделает его относительно домена запроса. Другими словами, RewriteRule ^(.*)$ /subdir$1 [R=301,L] перенаправит http://domain.localhost/blah-blah на http://domain.localhost/subdir/blah-blah

Ваш конфиг может быть сжат в одном RewriteRule:

Options +FollowSymLinks
DirectoryIndex questions.php
RewriteEngine on

RewriteCond %{REQUEST_URI} !^/subdir
RewriteRule ^(.*)$ /subdir$1 [R=301,L]

Поскольку совпадение с шаблоном RewriteRule будет включать в себя начальные значения /, т. Е. / Blah-blah, перезапись /subdir$1 не позволит перенаправлению вызвать двойную косую черту.

0 голосов
/ 08 марта 2012

нет необходимости указывать имя домена в ваших правилах перезаписи:

RewriteCond $0 !^subdir
RewriteRule (.*) /subdir/$1 [L]

(не забудьте сначала очистить кеш браузера)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...