Ответы пользователя по тегу htaccess
  • Как сделать автоподстановку "/" в конце url и исключить страницы без него? .htacess или nginx?

    shambler81
    @shambler81 Куратор тега htaccess
    ############################################################################
    #### Cтандартный .htaccess для проектов студии Клондайк, версия 2.3     ####
    ############################################################################
    RewriteEngine On
       #  Директива включает редиректы.
    RewriteBase /
       # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1  с директивой  = /$1
    Options +FollowSymLinks
       # Разрешает переход по символическим ссылкам.
    
    ############################################################################
    #### Перенаправляем протокол https на http                              ####
    ############################################################################
    RewriteCond %{HTTPS} on
       # Проверяем наличие https в URL.
    RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI}
       # Перенаправляем протокол на http.
    
    ############################################################################
    #### Выбор основного зеркала (или с www или без www)                    ####
    ############################################################################
       # 1. Редирект с www на без www. (раскоментировать директивы пункта 1)
    #RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
       # Проверяем, содержит ли домен www (в начале URL).
    #RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
       # Перенаправляем URL на домен без www.
    ####
       # 2. Редирект без www на www. (раскоментировать директивы пункта 2)
    #RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
       # Проверяем, не содержит ли домен www (в начале URL).
    #RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
       # Перенаправляем URL на домен c www.
    
    ############################################################################
    #### Убираем повторяющиеся слеши (/) в URL                              ####
    ############################################################################
    RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$
       # Проверяем, повторяется ли слеш (//) более двух раз.
    RewriteRule . %1/%2 [R=301,L]
       # Исключаем все лишние слеши.
    
    ############################################################################
    #### Убираем слеши в конце URL для статических файлов (содержит точку)  ####
    ############################################################################
    RewriteCond %{REQUEST_URI} \..+$
       # Если файл содержит точку.
    RewriteCond %{REQUEST_FILENAME} !-d
       # И это не директория.
    RewriteCond %{REQUEST_FILENAME} -f
       # Является файлом.
    RewriteCond %{REQUEST_URI} ^(.+)/$
       # И в конце URL есть слеш.
    RewriteRule ^(.+)/$ /$1 [R=301,L]
       # Исключить слеш.
    ############################################################################
    #### Добавляем слеш(/), если его нет, и это не файл.                    ####
    ############################################################################
    RewriteCond %{REQUEST_URI} !(.*)/$
       # Если слеша в конце нет.
    RewriteCond %{REQUEST_FILENAME} !-f
       # Не является файлом.
    RewriteCond %{REQUEST_URI} !\..+$
       # В URL нет точки (файл).
    RewriteRule ^(.*)$ $1/ [L,R=301]
       # Добавляем слеш в конце.
    
    ############################################################################
    #### Убираем index.php, если он есть в конце URL                        ####
    ############################################################################

    думаю вам этого заглаза
    Ответ написан
    Комментировать
  • Почему https не работает только на главной странице?

    shambler81
    @shambler81 Куратор тега htaccess
    У тебя значит редирект на без ввв и еще в добавок явно прописан http
    места где это может быть сделано
    1. vhost apache
    2. nginx
    3. .htaccess
    4. не оно но всеже, удали второй Options +FollowSymLinks
    RewriteEngine On они просто не нужны, и подними над чпу, но не выше предидущих Options +FollowSymLinks
    RewriteEngine On
    5. У вас не правильно определяется https, лучше делать таким образом
    RewriteCond %{HTTPS} on
    RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI}

    Ну только в обратную сторону
    5. урлы на самом сайте имеют вид site.ru/page.html а не page.html
    У вас чистый nginx+php-fpm и .htaccess вообще не понимает редиректы.
    Ответ написан
  • Как настроить редирект с каталога на симлинк?

    shambler81
    @shambler81 Куратор тега htaccess
    А потому что утебя не правильно написано
    ОР хитрожопая тема и настолько неудлобная что я ей даже не пользуюсь.
    Вот пример как она работает.
    RewriteCond %{HTTP_HOST} ^(.*)9918474\.ru$    [NC,OR]
    RewriteCond %{HTTP_HOST} ^(.*)site4top\.ru$      [NC,OR]
    RewriteCond %{HTTP_HOST} ^(.*)sunnyfruits\.ru$ [NC,OR]
    RewriteCond %{HTTP_HOST} ^(.*)u-kit\.ru$           [NC,OR]
    RewriteCond %{HTTP_HOST} ^(.*)mediagrup\.ru$ [NC,OR]
    RewriteCond %{HTTP_HOST} ^(.*)vmast\.ru$         [NC,OR]
    RewriteCond %{HTTP_HOST} ^(.*)desid\.ru$          [NC]
    RewriteRule ^(.*)$ http://klondike-studio.ru/  [R=301,L]

    Смотри на предпоследнюю строчку.

    Попробуй что-то вроде
    RewriteEngine On
    Options +FollowSymLinks
    
    RewriteCond %{REQUEST_URI} ^/(page[0-9]{1,}/)(.*)$ 
    RewriteRule ^(.*)$ %1/$1 [R=301,L]
    Ответ написан
  • Как сделать 302 редирект папки сайта в папку на поддомене?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^(www.|)site.com$
    RewriteRule ^/en/.*/(.*)$ http://old.site.com/en/.*/(.*)$1 [R=301,L]
    Ответ написан
    Комментировать
  • 301 редирект, как правильно расположить по порядку?

    shambler81
    @shambler81 Куратор тега htaccess
    если вы используете двухуровневые конструкции типа

    RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$
    RewriteRule . %1/%2 [R=301,L]
    то разницы нет никакой.
    А вот если вы делаете просто
    RewriteRule catalog$ http://site.ru/goods[R=301,L]
    RewriteRule catalog/tovar3.html$ http://site.ru/goods/tovar/tovar3[R=301,L]
    то в таком случае редирект каталога должен стоять после редиректов всех внутри него.
    Ответ написан
    Комментировать
  • .htaccess редирект на https с адреса типа - сайт.ru?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{HTTPS} on
    RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI}

    Такая тема пойдет?
    ну соответственно наоборот.
    Ответ написан
    Комментировать
  • Как убрать появившиеся get параметры при 301 редиректе через .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    вопрос еще не решен?
    Так удалить гет вообдще

    RewriteRule .* /sait_vizitka?
    - обрати внимание на вопросик в конце, он удалит гет
    если тебе нужно работать с самим гетом и убрать часть их то это немного неправельно поставленный вопрос
    RewriteRule работает с урлом, гет не являетя его частью в принципе.

    Вмм нужно двухуровневую конструкцию
    # 301 --- http://shop.wildorchid.ru/Catalog/StyleCard.aspx?&shop=2&categoryid=2046&style=27600 => http://shop.wildorchid.ru/catalog/trusy/1465-vendetta/?show_all=N&arrFilter_199_447073417=Y&arrFilter_P1_MIN=500&arrFilter_P1_MAX=1399&CHECK_PRICE=N&orderBy=new_desc&set_filter=Y
    RewriteCond %{QUERY_STRING} (^|&)shop=2($|&)
    RewriteCond %{QUERY_STRING} (^|&)categoryid=2046($|&)
    RewriteCond %{QUERY_STRING} (^|&)style=27600($|&)
    RewriteRule ^Catalog/StyleCard\.aspx$ /catalog/trusy/1465-vendetta/?show_all=N&arrFilter_199_447073417=Y&arrFilter_P1_MIN=500&arrFilter_P1_MAX=1399&CHECK_PRICE=N&orderBy=new_desc&set_filter=Y [L,R=301]


    Ну и да редирект на гет запрос, следовательнов вам нужно поменять ? на # и будет вам счастье.
    Ответ написан
    Комментировать
  • Как в mod_rewrite сделать URL с отутствующими папками?

    shambler81
    @shambler81 Куратор тега htaccess
    да вам нужно это сделать в nginx
    Ответ написан
    Комментировать
  • Как сделать редирект без изменения адреса url?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteEngine On
    RewriteBase /
    Options +FollowSymLinks
    RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

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

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

    Теперь как впихнуть невпихуемое.
    ты хочешь поменять урл но не менять его и наоборот что вообще-то туповато.
    Но тем не менее подмену файлов можно сделать, притом не трогая движок сайта вообще.
    Но это можно сделать в nginx в режиме прокси. в таком случае он будет физически подменять папки но урлы при этом меняться не будут.
    Ответ написан