приветствую! помогите правильно настроить редиректы: 301-ый серверный редирект со страниц содержащих www в начале URL адреса, на страницы без такового параметра 301-ый серверный редирект со страниц без “/” в конце URL-адреса, на страницы со “/” в конце URL-адресе 301-ый серверный редирект со всех страниц, содержащих index.php в конце URL-адреса (в том числе и /index.php) на соответствующие страницы без данного параметра в конце URL-адреса 301-ый редирект со страниц содержащих множественный “///” в конце URL адрес на соответствующие страницы с “/” на конце URL адреса как не пытался - то один не работает то другой... плюс после добавления этих редиректов проблема с ответом сервера на 404 понимаю, что скорее всего, располагаю редиректы не в том порядке, направьте на путь истинный! :о) спасибо
перенесли всё на сервер с Апачем, но всё равно половина деректив htaccess не работает напомню, что необходимо: Настроить 301-ый серверный редирект со страниц содержащих www в начале URL адреса, на страницы без такового параметра. Настроить 301-ый серверный редирект со страниц без “/” в конце URL-адреса, на страницы со “/” в конце URL-адресе. Настроить 301-ый серверный редирект со всех страниц, содержащих index.php в конце URL-адреса (в том числе и /index.php) на соответствующие страницы без данного параметра в конце URL-адреса. Настроить 301-ый редирект со страниц содержащих множественный “///” в URL адресе на соответствующие страницы с единичным “/”. Настроить 301-ый редирект убрав слеш в конце URL для статических файлов (содержит точку) очень прошу помощи, уже весь мозг сломал @Dotrox, обратите, пожалуйста, внимание на данную тему, Ваши подсказки всегда мне помогали!!!
@Dotrox, приветствую! спасибо, что откликнулись! сейчас в htaccess так: по редиректу index.php в файле пусто, вообще ничего рабочего не попадалось... хостер чуток поправил - но всё равно, часть не работает... но насколько я знаю, после RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] своих деректив быть не должно... если это важно. то хостер fozzy.com
Как обычно, всё дермо, что в интернете нашлось - всё в одной куче. У вас там несколько раз RewriteEngine On повторяется. А вот это: Код: RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(\/?((catalog)|(assets)).+)\.css$ assets/style.php?l=4&p=$1&c=604800 [NC,L] RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(\/?((catalog)|(assets)).+)\.js$ assets/script.php?l=4&p=$1&c=604800 [NC,L] я не знаю под какой жвижок, но точно не для ОК! Если у вас никакие стили/скрипты не отвалились, значит вам повезло и оно просто не работает. Директивы связанные с кешированием статики тоже смысла не имеют - за статику у любого нормального хостера отвечает nginx. Если у Фоззи за это отвечает Апач и возможности переключится на nginx нет - это очень существенный повод для переезда! Не должно быть директив связанных с редиректами. Для начала замените всё содержимое .htaccess на это: Код: Options +FollowSymlinks Options -Indexes # Prevent Direct Access to files <FilesMatch "(?i)((\.tpl|\.ini|\.log|(?<!robots)\.txt))"> Order deny,allow Deny from all </FilesMatch> # SEO URL Settings RewriteEngine On RewriteBase / #### Выбор основного зеркала без www RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L] #### Убираем повторяющиеся слеши (/) в URL #RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/{2,} [NC] #RewriteRule ^(.*) $1 [R=301,L] RewriteCond %{THE_REQUEST} // RewriteRule .* /$0 [R=301,L] #### Убираем слеши в конце URL для статических файлов (содержит точку) RewriteRule ^(.*).html/ $1.html [R=301,L] #### Добавляем слеш(/), если его нет, и это не файл. RewriteCond %{REQUEST_URI} !(.*)/$ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !\..+$ RewriteRule ^(.*)$ $1/ [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteRule ^(.*[^\/])$ /$1/ [R=301,L] RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/ RewriteRule ^(.*)index\.(php|html|htm)$ http://igra.toys/$1 [R=301,L] 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) RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] ### Additional Settings that may need to be enabled for some servers ### Uncomment the commands by removing the # sign in front of it. ### If you get an "Internal Server Error 500" after enabling any of the following settings, restore the # as this means your host doesn't allow that. # 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it: # php_flag register_globals off # 2. If your cart has magic quotes enabled, This may work to disable it: # php_flag magic_quotes_gpc Off # 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try # php_value upload_max_filesize 999M # 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields # php_value post_max_size 999M # 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields # php_value max_execution_time 200 # 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields # php_value max_input_time 200 # 7. disable open_basedir limitations # php_admin_value open_basedir none Это всё уже было в файле, я только выкинул лишнее и разместил оставшееся в правильном порядке. Посмотрите, что останется нерабочим и можно будет уже разбираться по отдельности.
@Dotrox ок, спасибо, попробую этот кусок с повторами "RewriteEngine On" вставляет Nitro Pack Cache - посмотрю, не пропишет ли он это снова, после удаления по результатам отпишусь. ещё раз Вам спасибо! --- Добавлено, 13 май 2018 --- заменил htaccess на предложенный Вами может я конечно, что то не так делаю...., но: проверяю здесь https://webmaster.yandex.ru/tools/server-response/ http://igra.toys Код статуса HTTP 200 OK ОК, работает http://www.igra.toys Код статуса HTTP 301 Moved Permanently ОК, работает - перенаправляет на http://igra.toys http://igra.toys/serii Код статуса HTTP 301 Moved Permanently ОК, работает - перенаправляет на http://igra.toys/serii/ http://igra.toys/serii/index.php Код статуса HTTP 301 Moved Permanently ОК, работает - перенаправляет на http://igra.toys/serii/ http://igra.toys/// Код статуса HTTP 200 OK Не работает, должен быть 301 на http://igra.toys и как то можно избавится от множественного редиректа такого плана если ввести http://igra.toys/serii/працшугкншцарываповыпаоы то сначала 301 редирект добавляющий слеш в конце URL, а потом уже 404 ошибка
Никак. О том, что там 404 знает только ОК. Единственный вариант - это передать добавление слешей в ОК вместо Апача, но это сложнее и работать будет медленней. Замените это: Код: #RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/{2,} [NC] #RewriteRule ^(.*) $1 [R=301,L] RewriteCond %{THE_REQUEST} // RewriteRule .* /$0 [R=301,L] На это: Код: RewriteCond %{REQUEST_URI} ^(.*?)/{2,}$ RewriteRule . $1/ [R=301,L]
@Dotrox - заменил, теперь http://igra.toys/serii/index.php Код статуса HTTP 301 Moved Permanently ОК, работает - перенаправляет на http://igra.toys/ именно в корень, убирая (в данном контексте) serii http://igra.toys/// Код статуса HTTP 200 OK Не работает, должен быть 301 на http://igra.toys а если так http://igra.toys///serii/ то Код статуса HTTP 301 Moved Permanently на http://igra.toys/?_route_=serii/ и не пускает в админку... P.S. вернул предыдущий вариант - при заходе в админку Сайт igra.toys выполнил переадресацию слишком много раз. P.S.S. убираю в hpaccess то что касается index.php - админка работает...
Тут всё очевидно - у админки же нет ЧПУ, то есть там всегда в ссылках есть index.php. И это мне напомнило, что он есть не только в ссылках админки, но и во всех аякс ссылках. Попробуйте для начала убрать эту строку: Код: RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/ Замените здесь 0 на 1: Код: RewriteRule .* /$0 [R=301,L]
@Dotrox, приветствую! RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/ эту строчку заменю, попробую а эту строчку RewriteRule .* /$0 [R=301,L] мы уже заменили здесь Замените это: #RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/{2,} [NC] #RewriteRule ^(.*) $1 [R=301,L] RewriteCond %{THE_REQUEST} // RewriteRule .* /$0 [R=301,L] На это: RewriteCond %{REQUEST_URI} ^(.*?)/{2,}$ RewriteRule . $1/ [R=301,L]