2012-03-09 3 views
1

У меня почти было это с mod_rewrite. Я вынул каждый другой Записать переписать (за исключением RewriteEngine on ... хотя я должен, потому что это явно проблема), и это все еще не работает. Я включил весь свой файл виртуального хоста, поэтому, надеюсь, кто-то может сказать мне, что здесь не так. Я хочу, чтобы напечатать следующую информацию и быть перенаправлены (т.е. внутри. Не отображается в адресной строке), как такApache RewriteRule для перенаправления домена в подпапку приводит к переадресации

  1. www.example.com--->www.example/files/main/index.php
  2. www.business.example.com--->www.example/files/business/index.php
  3. www.tech.example.com--->www.example/files/tech/index.php
  4. www.sports.example.com--->www.example/files/sports/index.php
  5. ...

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

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

ServerAdmin [email protected] 
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> 
+0

Я не вижу флаг '[R]' в ваших правилах перезаписи, тогда почему вы перенаправляетесь? Можете ли вы посмотреть на сетевой инспектор браузера (F12 в Chrome/Firebug) и опубликовать запрошенный URL-адрес и перенаправленные URL-адреса? –

+0

@SalmanA Все, что он говорит, это http: //www.example.com/- GET -403 Запрещен -text/html – puk

+0

403 запрещен - это не то же самое, что и цикл перенаправления. –

ответ

0

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

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

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

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

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

RewriteRule ^$ /foo/bar 

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

RewriteRule ^/$ /foo/bar 

перезагрузил сервер, подошел к нему и получил старый Запрошенный URL/вар/WWW/Foo/бар не был найден на этом сервере. Нет петли.

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

Смежные вопросы