переписать папку htaccess - PullRequest
0 голосов
/ 21 июля 2011

Я читал несколько постов о переписывании папок в htaccess, но ни один из них не соответствует моему вопросу (правильно).

Мой вопрос:

Iиметь 2 подпапки на сервере, website1 и website2.

Когда пользователь переходит на www.foo.com Я хочу, чтобы визуальный URL оставался прежним, но хочу, чтобы URI сервера перешел на /website1/, где он будет загружатьсяindex.php для веб-сайта1

Затем я хочу то же самое, только когда пользователь снова заходит на www.bar.com, URL-адрес не меняется, но на этот раз он ссылается на /website2/, где он будет загружать index.phpдля второго сайта.

Буду очень признателен за помощь в этом, так как я все еще учусь переписывать.Примеры с объяснениями будут высоко оценены.Также будет полезен любой совет передовой практики (если таковой имеется).

Ответы [ 2 ]

0 голосов
/ 21 июля 2011

KingCrunch прав - правильный способ настройки такой среды - использовать директиву <VirtualHost> в конфигурационном файле Apache.

Если по какой-либо причине это должно быть сделано через rewrite и .htaccess.тогда вам нужно mod_rewrite , чтобы включить и файлы .htaccess должны содержать правило перезаписи (директива AllowOverride).

Вот правила:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

# rule #1
RewriteCond %{HTTP_HOST} =www.foo.com
RewriteCond %{REQUEST_URI} !^/website1/
RewriteRule (.*) /website1/$1 [L]

# rule #2
RewriteCond %{HTTP_HOST} =www.bar.com
RewriteCond %{REQUEST_URI} !^/website2/
RewriteRule (.*) /website2/$1 [L]

Этот код должен быть помещен в файл .htaccess в корневой папке.При размещении в другом месте (например, в конфигурации или в контексте виртуального хоста) может потребоваться некоторая настройка.

Правило кулака для www.foo.com и второе для другого доменного имени.Эти правила в значительной степени совпадают.Мы просим Apache проверить доменное имя (через {HTTP_HOST} переменную запроса), и если оно соответствует нашему URL перезаписи (внутреннего перенаправления) домена в одну папку глубже.Вторым условием является предотвращение перезаписи цикла (чтобы не перезаписывать уже перезаписанный URL).Это необходимо, поскольку Apache после выполнения перезаписи переходит на следующую итерацию перезаписи (именно так она работает), и это условие необходимо для остановки цикла.

Полезная ссылка: http://httpd.apache.org/docs/current/rewrite/

0 голосов
/ 21 июля 2011

Я считаю, что вам нужно использовать только директивы RewriteCond и RewriteRule.Посмотрите «Хосты виртуальных пользователей» на http://httpd.apache.org/docs/1.3/misc/rewriteguide.html. Логика та же.(Я думаю.)

...