Чё-то не пойму никак в чём-же проблема ...
Раскомментил в .htaccess строки для редиректа с http://site.ru на http://www.site.ru:
RewriteCond %{HTTP_HOST} ^site\.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [L,R=301]
Теперь при заходе на страницу, видим redirect loop.
В чём трабла?..
Комментарии
Так не покатит? :
RewriteCond %{HTTP_HOST} ^www\.some_site\.ru
RewriteRule ^(.*)$ http://some_site.ru/$1 [R=permanent,L]
так наоборот надо. с http://site.ru на http://www.site.ru.
Ну так поменяйте то, что Вам надо. В чем принципиальность?
RewriteEngine on
RewriteCond %{HTTP_HOST} ^SITE\.ru
RewriteRule ^(.*)$ http://www.SITE.ru/$1 [R=permanent,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>
Полная конструкция кода, как оно сделано у меня. Прям пепецЪ как трудно переставить www.
Товарищ, вы видимо не внимательно прочитали первое сообщение...
Я сделал именно так. И проблем переставить c http на http://www у меня нет.
Проблема в том, что сделав именно так как я показал в Первом сообщение (то-же, что вы показали в своём последнем сообщении) - при заходе на страницу у меня получается Redirect Loop!
Да нет ... достаточно внимательно, чтобы понять, что Вам впадлу погуглить на тему редиректов, их вариантов написания и уместности применения.
http://www.google.ru/search?hl=ru&newwindow=1&rlz=1C1GGLS_ruRU334RU334&q...
Хорошо, если Вам "не впадлу" погуглить на эту тему, и если вы уж соизволили отписаться в моей теме, то может быть просвятите меня, почему редиректы зацикливаются?
Есть предположение, что дело в особенностях вашей хостинг-платформы. У меня, например, Ваша конструкция работать не будет.
[L,R=301][NC][R=permanent,L][L,QSA]
Вот с ними и разбирайтесь. Я методом тыка в свое время подбирал, пока не выявил более менее работоспособную конструкцию. Может еще где накосячили...
Спасиб.
Было предположение, что это как-то связано с тем, что при установке друпала, где-то на одном из этапов установки когда нужно было указать Адрес сайта, указали site.ru вместо www.site.ru .. думал может именно в этом проблема. Т.е. htaccess редиректит куда надо, + друпал сам пытается редиректить куда-то .. вот и получается цикл.
мда. моё предположение оказалось ошибочным.
В settings.php задал $base_url = "http://www.site.ru"; , и всё равно redirect loop.
Хм... хостинг какой?
Ваще-то давайте Вам весь свой хытыацес скину, я уже просто не помню, что именно там менял, но точно помню, что тоже с первого раза нифига не получилось.
Вот так он выглядит у меня:
Order allow,deny
</FilesMatch>
Options -Indexes
Options +FollowSymLinks
AddDefaultCharset UTF-8
ErrorDocument 404 /index.php
<Files favicon.ico>
ErrorDocument 404 "The requested file favicon.ico was not found.
</Files>
DirectoryIndex index.php
<IfModule mod_php4.c>
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value session.auto_start 0
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.encoding_translation 0
</IfModule>
<IfModule sapi_apache2.c>
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value session.auto_start 0
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.encoding_translation 0
</IfModule>
<IfModule mod_php5.c>
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value session.auto_start 0
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.encoding_translation 0
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault A1209600
<FilesMatch \.php$>
ExpiresActive Off
</FilesMatch>
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.YOUR_SITE\.ru
RewriteRule ^(.*)$ http://YOUR_SITE.ru/$1 [R=permanent,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>
FileETag MTime Size
<ifmodule mod_expires.c>
<filesmatch "\.(jpg|gif|png|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 1 year"
</filesmatch>
</ifmodule>
Авось заработает На своём проверил прежде, чем Вам выложить предыдущую конструкцию - всё пучком.
p.s.: Тока бэкапнуть не забудьте на всякий пожарный.
p.s.s: Boost'ом не баловались случаем?
Поставил сначало как у вас - что-бы с www на http://site.ru кидало - вообще 0 эмоций.
Поменял на то что мне нужно:
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=permanent,L]
опять redirect loop.
Завтра, пожалуй, отпишу с утречка хостеру. Может смогут чем-то помочь.
Смогут и даже не вопрос У Вас нет других .htaccess, которые могут конфликтовать? Просто может что-то еще обрабатываться в соседней директории - поэтому где-то несостыковки(была подобная проблема, правда не с друпал).
Кстати... Попробуйте сессию рубануть или искусственно ошибку вызвать И загляните с другого браузера - знаю, звучит глупо, но как ни странно иногда с другого браузера всё путем
Кстати ... еще вот такой вариант может проканать:
Order allow,deny
</FilesMatch>
Options -Indexes
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.XXX\.ru
RewriteRule ^(.*)$ http://XXX.ru/$1 [R=permanent,L]
AddDefaultCharset UTF-8
ErrorDocument 404 /index.php
<Files favicon.ico>
ErrorDocument 404 "The requested file favicon.ico was not found.
</Files>
DirectoryIndex index.php
<IfModule mod_php4.c>
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value session.auto_start 0
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.encoding_translation 0
</IfModule>
<IfModule sapi_apache2.c>
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value session.auto_start 0
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.encoding_translation 0
</IfModule>
<IfModule mod_php5.c>
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value session.auto_start 0
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.encoding_translation 0
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault A1209600
<FilesMatch \.php$>
ExpiresActive Off
</FilesMatch>
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>
FileETag MTime Size
<ifmodule mod_expires.c>
<filesmatch "\.(jpg|gif|png|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 1 year"
</filesmatch>
</ifmodule>
Сорь ... www сами переставите...
p.s.Upd: У меня тоже кстати лупы, но они секунд на 5 после перезаливки файла. Вспомнил, был подобный косяк, когда редактировал напрямую через фтпшку. Ошибка висела до 5 минут, потом начинал работать нормально - тут, имхо, тупинг, который от Вас не зависит.
Удалите старый файл перед заливкой нового и немного подождите
всё перепробовал, из выше предложенного... нулевой результат.
Кстати, знаете что интересно... если выставить в хтаксессе
RewriteRule ^(.*)$ http://XXX.ru/$1 [R=permanent,L]
т.е. , сделать редирект с "c www" на "без www" то вообще ничё не происходит. Т.е. не делает редирект ни если я захожу на http://site.ru, ни если захожу на http://www.site.ru
Ну тада попробуйте сапорт помучать
Завтра так и поступлю
Решено. ПРоблема действительно была в настройках хостинга. По запросу, хостеры быстро всё сделали.
Ну и ладушки