Ответы пользователя по тегу Обработка URL
  • Как настроить rewriterule в htaccess для главной страницы и категорий?

    shambler81
    @shambler81 Куратор тега htaccess
    Мде а кто тебе сказал что GET пармметр является частью урла ?
    Тут тебе будет пример как сделать редирект с гет пармметрами.
    https://donatstudios.com/RewriteRule_Generator
    А тут я писал как убрать категорию.
    https://klondike-studio.ru/blog/snipet-for-htaccess/
    Ответ написан
    Комментировать
  • Как сократить сразу два URL через .HTACCCESS?

    shambler81
    @shambler81 Куратор тега htaccess
    в конде создайте услови или, или
    собственно и все
    RewriteCond %{REQUEST_URI}  ^([A-z0-9-]+)$/(posts|pages)/([A-z0-9-]+)/$1  [NC]
    RewriteRule   .*  http://site.ru/%1%3

    Где %1 это номер скобки в конде, аналог $1 прям из рула.
    Ответ написан
  • Редирект не срабатывает с https на http если стоит в конце /, почему?

    shambler81
    @shambler81 Куратор тега htaccess
    Для начала так:
    RewriteRule ^([^/.]*)/?$ index.php?sport=$1 [QSA,L]
    RewriteRule ^([^/.]*)/?$ index.php\?sport=$1 [QSA,L]


    Ну а остальное посмотри тут, много условий все подписаны
    ############################################################################
    #### 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}
    #RewriteCond %{HTTP:X-Forwarded-Protocol} =https 
    #RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
    #RewriteCond %{ENV:HTTPS} on
    #RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
       # Перенаправляем протокол на 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 %{THE_REQUEST} //
    RewriteRule .* /$0 [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                        ####
    ############################################################################
    RewriteCond %{REQUEST_METHOD} =GET
       # Выявляем GET запрос в URL (не POST).
    RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
       # URL cодержит index.php в конце.
    RewriteRule ^(.*)$ %1/ [R=301,L]
       # Удалить index.php из URL.
    
    ############################################################################
    #### Компрессия статического контента для гугл  спид тест               ####
    ############################################################################
    <IfModule mod_deflate.c>
      # Compress HTML, CSS, JavaScript, Text, XML and fonts
      AddOutputFilterByType DEFLATE application/rss+xml
      AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
      AddOutputFilterByType DEFLATE application/x-font
      AddOutputFilterByType DEFLATE application/x-font-opentype
      AddOutputFilterByType DEFLATE application/x-font-otf
      AddOutputFilterByType DEFLATE application/x-font-truetype
      AddOutputFilterByType DEFLATE application/x-font-ttf
      AddOutputFilterByType DEFLATE application/x-javascript
      AddOutputFilterByType DEFLATE application/xhtml+xml
      AddOutputFilterByType DEFLATE application/xml
      AddOutputFilterByType DEFLATE font/opentype
      AddOutputFilterByType DEFLATE font/otf
      AddOutputFilterByType DEFLATE font/ttf
      AddOutputFilterByType DEFLATE image/svg+xml
      AddOutputFilterByType DEFLATE image/x-icon
      AddOutputFilterByType DEFLATE text/css
      AddOutputFilterByType DEFLATE text/html
      AddOutputFilterByType DEFLATE text/javascript
      AddOutputFilterByType DEFLATE text/plain
      AddOutputFilterByType DEFLATE text/xml
      AddOutputFilterByType DEFLATE image/svg+xml
    </IfModule>
    <IfModule mod_expires.c>
      ExpiresActive on
      ExpiresByType image/jpeg "access plus 3 day"
      ExpiresByType image/svg "access plus 3 day"
      ExpiresByType image/gif "access plus 3 day"
      ExpiresByType image/png "access plus 3 day"
      ExpiresByType text/javascript "access plus 3 day"
      ExpiresByType text/css "access plus 3 day"
      ExpiresByType application/javascript "access plus 3 day"
    </IfModule>
    ############################################################################
    #### Конец общей части, далее следует собственные директивы .htaccess   ####
    ############################################################################
    Ответ написан
    Комментировать
  • Кириллица в URL - полезно ли для SEO?

    shambler81
    @shambler81 Куратор тега htaccess
    не полезно.
    Кириллица в принципе не полезно.
    Хоть линукс давно нормально работает с UTF-8 но де факто косяки есть
    Так что это будет минус для сайта.
    А вот для самого сео не особо.
    НО зачем гемор на пустом месте.
    Весь кирилиц в транслит.
    Ответ написан
    4 комментария
  • Двойная замена url в htacces?

    shambler81
    @shambler81 Куратор тега htaccess
    причем тут htaccess
    вопервых ?cart=2 - это не ссылка и не является частью урла в принципе
    ( с точки зрения mod_rewrite)
    Во вторых тебе нужен не .htaccess а AJAX
    Ответ написан
  • Как поменять url адресс?

    shambler81
    @shambler81 Куратор тега htaccess
    Комментировать
  • Как добавить исключение к правилу перенаправления в htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    Помоему это очевидно, используй отрицание !
    RewriteCond %{HTTP_HOST} ^oldsite\.ru
    RewriteCond %{REQUEST_URI} ^!camera/$
    RewriteRule ^(.*)$ http://newsite.ru/$1 [R=301,L]
    Ответ написан
  • Как сделать редирект изображений?

    shambler81
    @shambler81 Куратор тега htaccess
    /bitrix/admin/site_checker.php?lang=ru
    че говорит ?
    Ответ написан
  • Как исправить mod_rewrite?

    shambler81
    @shambler81 Куратор тега htaccess
    %1 - это часть урла ? или это переменная из rewritecond ?

    если это просто урл то вот гдето-так ?
    RewriteCond %{REQUEST_URI} ^(.*)/dir1/(.*)$ 
    # если строка содержит /dir1/ 
    RewriteRule ^(.*)$ %1/dir2/%2 [R=301,L] 
    #Перенаправить все урлы с начинающиеся с dir1 на dir2 с сохранением дальнейшей структуры URL
    Ответ написан
    9 комментариев
  • Редирект 301 при переносе сайта на новый домен?

    Вариант 1
    RewriteEngine On
    RewriteCond %{HTTPS} =off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

    Вариант 2
    RewriteEngine On
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

    если оба первых варианта не помогли и возникает циклическая переадресация:

    Вариант 3
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_UR
    Ответ написан
    1 комментарий
  • Как настроить исключения в .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    Тут все просто
    1. ДОбавить исключение ты уже умеешь это ! в RewriteCond
    так что добавь еще один конд
    конд
    конд
    конд
    конд
    что делать

    Теперь про отрезать
    как я понял ты регулярки немного знаешь так что понимаешь что такое $1$2 и и тд - если нет эт овсе что в скобках, какие скобки по очереди тот и бакс.
    Но это сработает на руле, а условия тебе нужны в конде
    ТАк вот Баксы с конда выгледят вот так %1 %2
    В таком случае.
    RewriteCond %{REQUEST_URI}  (скобка первая) ляляля ( скобка вторая)
    RewriteRule .* %1%2

    Соответственно получешь редирект на то что в скобках минуя ляляля. Но и это еще не все
    У тебя ошибка в редиректе НА гет он тупо не сработает
    экранируй все ? в - куда
    иначе они просто не появятся.

    Если не достаточно то вот пара примеров
    klondike-studio.ru/blog/snipet-for-htaccess
    Ответ написан
    Комментировать
  • Как сделать такой ЧПУ?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteRule ^industries/([^/]*)([/?]*)(/?)+$ http://site.ru/industries/index.php\?razd=$1&page=$2 [L]

    Можно через бейс дир сделать
    Вообще есть куда более валидные способы.
    От себя добавлю что
    1. в урл не входит гет запрос, это не часть урла, по этому тебе их выхватывать нужно через квери стринг в реврайт конд.
    Второе если ты нааправляешь на урл то экранируй ? иначе не сработает, ну или передавай сразу квери стринг.
    Ответ написан
    Комментировать
  • Как правильно составить регулярное выражение в htaccess для фильтров каталога с ЧПУ?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{REQUEST_URI} (групап1)(групап1)(групап1)(групап1)$
    RewriteRule ^(.*) http://site.ru/index.php\?module=....\?=%1\?=%2\?=%3   [NC,L,QSA]

    Главное вопросы заэкранируй
    Ответ написан
    Комментировать
  • Как в htaccess указать, что нужно отдавать предварительно сжатые файлы?

    shambler81
    @shambler81 Куратор тега htaccess
    а так не?
    <IfModule mod_deflate.c>
      # Compress HTML, CSS, JavaScript, Text, XML and fonts
      AddOutputFilterByType DEFLATE application/rss+xml
      AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
      AddOutputFilterByType DEFLATE application/x-font
      AddOutputFilterByType DEFLATE application/x-font-opentype
      AddOutputFilterByType DEFLATE application/x-font-otf
      AddOutputFilterByType DEFLATE application/x-font-truetype
      AddOutputFilterByType DEFLATE application/x-font-ttf
      AddOutputFilterByType DEFLATE application/x-javascript
      AddOutputFilterByType DEFLATE application/xhtml+xml
      AddOutputFilterByType DEFLATE application/xml
      AddOutputFilterByType DEFLATE font/opentype
      AddOutputFilterByType DEFLATE font/otf
      AddOutputFilterByType DEFLATE font/ttf
      AddOutputFilterByType DEFLATE image/svg+xml
      AddOutputFilterByType DEFLATE image/x-icon
      AddOutputFilterByType DEFLATE text/css
      AddOutputFilterByType DEFLATE text/html
      AddOutputFilterByType DEFLATE text/javascript
      AddOutputFilterByType DEFLATE text/plain
      AddOutputFilterByType DEFLATE text/xml
      AddOutputFilterByType DEFLATE image/svg+xml
    </IfModule>
    <IfModule mod_expires.c>
      ExpiresActive on
      ExpiresByType image/jpeg "access plus 3 day"
      ExpiresByType image/svg "access plus 3 day"
      ExpiresByType image/gif "access plus 3 day"
      ExpiresByType image/png "access plus 3 day"
      ExpiresByType text/javascript "access plus 3 day"
      ExpiresByType text/css "access plus 3 day"
      ExpiresByType application/javascript "access plus 3 day"
    </IfModule>
    Ответ написан
  • Как сделать редирект всех урл с? на главную страницу сайта (подробнее в описании)?

    shambler81
    @shambler81 Куратор тега htaccess
    если файл существует, то это ответ 200ок ?
    тогда вам смело в nginx
    Проверку в .htaccess я бы ооочень не рекомендовал, не говря уже что без костылей это не сделать.
    Ответ написан
  • Kак сделать чтобы часть урл в чпу с htaccess начиналась после другой но кроме той же самой?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{REQUEST_URI} !/lang/en/.*$
    RewriteRule ^lang/(.*)/$ index.php?dir=main〈=$1


    RewriteCond %{REQUEST_URI} !/blog/.*$
    RewriteRule blog$ index.php?dir=blog	[L]


    ! - отрицание
    RewriteCond -если
    Ответ написан
    Комментировать
  • Перенаправленние htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    Ответ написан
    Комментировать
  • Как удалить слеш из URI в htaccess?

    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                        ####
    ############################################################################
    RewriteCond %{REQUEST_METHOD} =GET
       # Выявляем GET запрос в URL (не POST).
    RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
       # URL cодержит index.php в конце.
    RewriteRule ^(.*)$ %1/ [R=301,L]
       # Удалить index.php из URL.
    ############################################################################
    #### Сжание контента  под требование гугла                        ####
    ############################################################################
    
    <IfModule mod_deflate.c>
      # Compress HTML, CSS, JavaScript, Text, XML and fonts
      AddOutputFilterByType DEFLATE application/javascript
      AddOutputFilterByType DEFLATE application/rss+xml
      AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
      AddOutputFilterByType DEFLATE application/x-font
      AddOutputFilterByType DEFLATE application/x-font-opentype
      AddOutputFilterByType DEFLATE application/x-font-otf
      AddOutputFilterByType DEFLATE application/x-font-truetype
      AddOutputFilterByType DEFLATE application/x-font-ttf
      AddOutputFilterByType DEFLATE application/x-javascript
      AddOutputFilterByType DEFLATE application/xhtml+xml
      AddOutputFilterByType DEFLATE application/xml
      AddOutputFilterByType DEFLATE font/opentype
      AddOutputFilterByType DEFLATE font/otf
      AddOutputFilterByType DEFLATE font/ttf
      AddOutputFilterByType DEFLATE image/svg+xml
      AddOutputFilterByType DEFLATE image/x-icon
      AddOutputFilterByType DEFLATE text/css
      AddOutputFilterByType DEFLATE text/html
      AddOutputFilterByType DEFLATE text/javascript
      AddOutputFilterByType DEFLATE text/plain
      AddOutputFilterByType DEFLATE text/xml
    
      # Remove browser bugs (only needed for really old browsers)
    #  BrowserMatch ^Mozilla/4 gzip-only-text/html
    #  BrowserMatch ^Mozilla/4\.0[678] no-gzip
    #  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    #  Header append Vary User-Agent
    </IfModule>
    <IfModule mod_expires.c>
      ExpiresActive on
      ExpiresByType image/jpeg "access plus 3 day"
      ExpiresByType image/gif "access plus 3 day"
      ExpiresByType image/png "access plus 3 day"
      ExpiresByType text/javascript "access plus 3 day"
      ExpiresByType text/css "access plus 3 day"
      ExpiresByType application/javascript "access plus 3 day"
    </IfModule>
    ############################################################################
    #### Конец общей части, далее следует собственные директивы .htaccess   ####
    ############################################################################
    Ответ написан
    Комментировать
  • Как сделать 302 редирект папки сайта в папку на поддомене?

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