Apache RewriteRule для перенаправления домена в подпапку приводит к циклу перенаправления - PullRequest
0 голосов
/ 09 марта 2012

У меня почти было это с mod_rewrite.Я убрал все остальные оператор перезаписи (за исключением RewriteEngine on ... хотя я должен был это сделать, потому что это явно проблема), и это все еще не работает.Я включил весь свой файл виртуального хоста, так что, надеюсь, кто-нибудь скажет мне, что здесь не так.Я хочу набрать следующее и быть перенаправленным (то есть внутренне, т.е. невидимым в адресной строке), вот так1012 *www.business.example.com ---> www.example/files/business/index.php

www.tech.example.com ---> www.example/files/tech/index.php www.sports.example.com ---> www.example/files/sports/index.php ...

Я попытался одновременно взяться за 1 и 2-5 +, и это было катастрофой.Поэтому я временно отказался от 2-5+ и просто попытался заставить 1 работать, и независимо от того, что я делаю, я получаю цикл перенаправления.Очевидно, что я предпочел бы идеальный ответ для копирования вставки, но я бы даже согласился с кем-то, объясняющим, почему mod_rewrite настаивает на предпочтении циклов перенаправления.Спасибо.

<VirtualHost *:80>
RewriteEngine on
RewriteRule ^$ /files/main

ServerAdmin www-data@example.com
ServerName www.example.com
ServerAlias example.com *.example.com
DocumentRoot /var/www
DirectoryIndex index.html index.php filename.html index.cgi index.pl default.htm

<Directory /var/www>
suPHP_Engine on
suPHP_AddHandler application/x-httpd-php .php
suPHP_ConfigPath /etc/php5/cgi/
AllowOverride None
Options -Indexes +FollowSymLinks
</Directory>

LogLevel warn 
LogFormat "%v %l %u %t \"%r\" %>s %b" comonvhost
CustomLog /var/log/apache2/access.log comonvhost
</VirtualHost>

1 Ответ

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

В документации mod_rewrite:

http://httpd.apache.org/docs/current/rewrite/remapping.html#canonicalhost

Если вам надоел mod_rewrite, это может быть просто вещь. (Вы хотите перенаправить эти веб-сайты на новый URL-адрес или сделать это незаметно?)

Я не могу воспроизвести проблему, с которой вы столкнулись. В моей настройке довольно много записей VirtualHost и записей Справочника, при этом происходит довольно много переписывания.

Я добавил правило, очень похожее на ваше, в свой основной VirtualHost. Теперь вы должны знать, что это ничего не будет соответствовать, потому что запрос корня документа / не пустая строка.

RewriteRule ^$ /foo/bar

Я не получил петлю перенаправления при доступе к сайту; это было просто проигнорировано. Затем я изменил его на:

RewriteRule ^/$ /foo/bar

Перезапустил сервер, зашел на него и получил старый Запрошенный URL / var / www / foo / bar не найден на этом сервере. Без цикла.

В вашей настройке есть что-то еще. Возможно, URL, по которому вы переписываете, имеет локальный .htaccess, который запускает цикл. (Но то, как они переписываются с помощью совпадения для ^$, бьет меня.)

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