помогите с редиректами

Тема в разделе "OpenCart", создана пользователем sonicking, 5 апр 2018.

  1. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    приветствую!
    помогите правильно настроить редиректы:

    301-ый серверный редирект со страниц содержащих www в начале URL адреса, на страницы без такового параметра
    301-ый серверный редирект со страниц без “/” в конце URL-адреса, на страницы со “/” в конце URL-адресе
    301-ый серверный редирект со всех страниц, содержащих index.php в конце URL-адреса (в том числе и /index.php) на соответствующие страницы без данного параметра в конце URL-адреса
    301-ый редирект со страниц содержащих множественный “///” в конце URL адрес на соответствующие страницы с “/” на конце URL адреса

    как не пытался - то один не работает то другой... плюс после добавления этих редиректов проблема с ответом сервера на 404

    понимаю, что скорее всего, располагаю редиректы не в том порядке, направьте на путь истинный! :о)

    спасибо
     
  2. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    неужели никто не сталкивался
    P.S. сервер на LiteSpeed
     
  3. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    перенесли всё на сервер с Апачем, но всё равно половина деректив htaccess не работает
    напомню, что необходимо:
    Настроить 301-ый серверный редирект со страниц содержащих www в начале URL адреса, на страницы без такового параметра.
    Настроить 301-ый серверный редирект со страниц без “/” в конце URL-адреса, на страницы со “/” в конце URL-адресе.
    Настроить 301-ый серверный редирект со всех страниц, содержащих index.php в конце URL-адреса (в том числе и /index.php) на соответствующие страницы без данного параметра в конце URL-адреса.
    Настроить 301-ый редирект со страниц содержащих множественный “///” в URL адресе на соответствующие страницы с единичным “/”.
    Настроить 301-ый редирект убрав слеш в конце URL для статических файлов (содержит точку)
    очень прошу помощи, уже весь мозг сломал
    @Dotrox, обратите, пожалуйста, внимание на данную тему, Ваши подсказки всегда мне помогали!!!
     
  4. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Покажите, что у вас там сейчас.
     
  5. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    @Dotrox, приветствую! спасибо, что откликнулись! сейчас в htaccess так:



    по редиректу index.php в файле пусто, вообще ничего рабочего не попадалось...

    хостер чуток поправил - но всё равно, часть не работает...



    но насколько я знаю, после RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] своих деректив быть не должно...

    если это важно. то хостер fozzy.com
     
    Последнее редактирование: 13 май 2018
  6. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Как обычно, всё дермо, что в интернете нашлось - всё в одной куче.
    У вас там несколько раз 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
    Это всё уже было в файле, я только выкинул лишнее и разместил оставшееся в правильном порядке.
    Посмотрите, что останется нерабочим и можно будет уже разбираться по отдельности.
     
    sonicking нравится это.
  7. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    @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 ошибка
     
    Последнее редактирование: 13 май 2018
  8. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Никак. О том, что там 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]
     
  9. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    @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 - админка работает...
     
    Последнее редактирование: 13 май 2018
  10. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Тут всё очевидно - у админки же нет ЧПУ, то есть там всегда в ссылках есть index.php. И это мне напомнило, что он есть не только в ссылках админки, но и во всех аякс ссылках.
    Попробуйте для начала убрать эту строку:
    Код:
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/
    Замените здесь 0 на 1:
    Код:
    RewriteRule .* /$0 [R=301,L]
     
  11. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    @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]