(сразу оговорюсь что уже задавал вопрос на другом форуме, но подходящего ответа /решения так не увидел. надеюсь тут кто-то разбирается в данном вопросе настройки серверов) 1. При редиректе сайта с WWW на безWWW c помощью .htacceess, столкнулся с такой проблемой при загрузке страницы www.example.com/page получается example.com/index.php?_route_=page я понимаю что правило RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] не распространяется на путь который начинается с WWW. как это исправить? кусок содержимого .htacceess Код: RewriteEngine On RewriteBase / RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L] RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L] RewriteRule ^system/download/(.*) /index.php?route=error/not_found [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] 2. Почему-то не пашет более правильный вариант на apache c httpd Код: NameVirtualHost *:80 <VirtualHost *:80> ServerName example.com DocumentRoot "/path/to/site" </VirtualHost> <VirtualHost *:80> ServerName www.example.com Redirect 301 / http://example.com/ </VirtualHost> при загрузке страницы www.example.com/page получается example.compage/ т.е. между именем сайта и страницей нет "/" Я предпочитаю пойти по пути №2. Кто сталкивался с подобной проблемой, подскажите как решить?
а можно ли более конкретно, с примером (лучше подтвержденным практикой) и по второму варианту желательно
RewriteCond %{QUERY_STRING} ^_route_=page/$ RewriteRule ^(.*)$ http://www.example.com/page? [R=301,L]
Это для редиректа страницы page, а для простого редиректа используй страндартный код Код: RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] И еще в чем может быть проблема, у Вас файл называется .htacceess а должен .htaccess
Спасибо за ответ. Ошибки в написании названии файла нет. Тут опечатался. Важно что я хотел пойти путем изменения директив в httpd.conf, но не в .htaccess чтобы не использовать многократно движек rewrite
Проблема с этим самым редиректом - с www на "без www" Поставил один сайт на нас ссылку с www, изменить ее никак не могу - не покупная и они все свои ссылки только так так оформляют. Но обнаружила косяк - мало того, что стандартные записи в .htaccess не работают, так еще и если попадаешь на сайт с www, то кодировка страницы сбивается (и тут на демо, кстати, тоже: http://www.opencart-russia.ru/demo20/) - на верхние значки и звездочки оцененного товара обратите внимание. В .htaccess записано: Код: RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] Не перекидывает. Версия движка 2.1.0.2 (rs.1)
Скажи хостингу "Эй ты, да ты, чтобы через минуту .htaccess заработал, и возражения не приниматься иначе уйду". После этих слов он по любому даст разрешения вносить изменения. Некоторые хосты блокируют изменения.
@solunski.d , вообще редиректы уже ставила и они работали без проблем и сразу, в частности, когда переносила сайт с движка на движок... редиректила ссылки. Про блокировку не слышала, хостинг бегет.
Пага, попробуй так Код: RewriteEngine On RewriteCond %{HTTP_HOST} ^example.ru RewriteRule (.*) http://www.example.ru/$1 [R=301,L] Только явно укажи домен сайта
Да понятно, что example под замену. Не сработало. Как узнать, что блокирует? И еще вопрос: у меня RewriteEngine On для SEO URL прописан, его продублировать или просто две строки, что ниже под него вставить?
Если он есть значит не нужен. Apache или Nginx? Что у вас cPanel? Можно попробовать в cPanel поставить редирект на без www. Задать вопрос хостингу
На бегете ничего не блокируют, там все четко. Броблема видимо в закешированных запрсах в мозиле. Пробуйте проверить в хроме. Правила редиректа должны быть сразу после RewriteBase /
Вот как-то и без понятия была. На других сайтах сталкивалась проверяла, а тут пока нет. Загрузила phpinfo - апач. cPanel нету, у них своя специфичная, похожая на таймвебовскую. Уф. Это дома коллекция браузеров, тут (на работе) пришлось ставить. Но вообще и лису почистила - не помогает. Ни тут ни там. Код: RewriteEngine On RewriteCond %{HTTP_HOST} ^example.ru RewriteRule (.*) http://www.example.ru/$1 [R=301,L] Не ругайтесь, может я чего не понимаю, но cond это условие? А rule - правило? Мне надо с www на без оного. Директивы правильно прописаны? Или мне кажется, что это обратный порядок?
вы наоборот сделали. В самом начале темы написано правильно. В строке где 301, это туда и пойдет переадресация
Я так и поняла. Но вариант из начала темы (6 пост) тоже пробовала - бесполезно. При этом я бы засомневалась, что редиректы вообще работают, но они работают. Работает к примеру : Redirect 301 /исходная ссылка http://сайт.ru/нужная ссылка С www по этому же принципу нельзя сделать? Хотя бы главную (ссылка-то на нее)?