некоторые проблемы с удалением www и перенаправлением index.html - PullRequest
0 голосов
/ 17 октября 2010

У меня проблемы с выполнением того, что я хочу сделать со следующей настройкой.

Я хотел бы удалить все WWW, а также переслать index.html в корневой каталог.Я хотел бы, чтобы это было для всех доменов, поэтому я делаю это в директиве каталога httpd.conf.

Я перепробовал много вариантов безуспешно.Последняя версия приведена ниже (домены находятся внутри / var / www / html, в отдельных каталогах).

http://www.example.com/index.html > http://example.com
http://www.example.com/someother/index.html > http://example.com/someother/

Спасибо,

Мария

<Directory "/var/www/html/*/">
    RewriteEngine on
    RewriteBase / 

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

    #RewriteCond %{REQUEST_URI} /^index\.html/       
    RewriteRule ^(.*)index\.html$ / [R=301,L]


        Options ExecCGI Includes FollowSymLinks
        AllowOverride AuthConfig
        AllowOverride All                      
        Order allow,deny
        Allow from all

 </Directory>      

Ответы [ 2 ]

0 голосов
/ 18 октября 2010

Это решает это для меня.Как я и подозревал, существует большая разница в применении rewriterule.Многие люди, в том числе и я, похоже, не знают об этом.

http://wiki.apache.org/httpd/RewriteContext

Сервер Apache HTTPD обрабатывает запросы в отдельных фазах.Хотя это обычно прозрачно для пользователя и администратора, оно влияет на поведение mod_rewrite, когда наборы правил размещаются в разных контекстах.Для упрощения немного: когда правила размещаются в блоках VirtualHost (или в контексте основного сервера), они оцениваются до того, как сервер еще не сопоставил запрошенный URI с путем файловой системы.И наоборот, когда правила помещаются в файлы .htaccess или в блоки Справочника в конфигурации основного сервера, они оцениваются после того, как эта фаза произошла.

0 голосов
/ 17 октября 2010

Попробуйте эти правила:

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]

RewriteRule ^/(.*/)?index\.html$ /$1 [R=301,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...