Задать вопрос
Ответы пользователя по тегу htaccess
  • Если доступ закрыт через .htaccess с помощью .htpasswd, то как разрешить доступ без пароля к определённой папке?

    shambler81
    @shambler81 Куратор тега htaccess
    положи в эту папку .htaccess
    он перебивает права вышестоящего и наследует.
    Ответ написан
  • Одновременный редирект с www на без www и c http на https на битриксе?

    shambler81
    @shambler81 Куратор тега 1С-Битрикс
    ############################################################################
    #### Выбор основного зеркала (с www или без www)                        ####
    ############################################################################
        # 1. Удалить www
    #RewriteCond %{ENV:HTTPS} on
        #Если включен https
    #RewriteRule .* - [E=SSL:s]
        #То создаем переменную  ssl с текстом s
    #RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
        # Проверяем, содержит ли домен www в начале URL.
    #RewriteRule ^(.*)$ http%{ENV:SSL}://%1/$1 [R=301,L]
        # Перенаправляем удаляем www
    
        # 2. Добавить www
    RewriteCond %{ENV:HTTPS} on
        #Если включен https
    RewriteRule .* - [E=SSL:s]
        #То создаем переменную  ssl с текстом s
    RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
        # Если нет www в начале домена
    RewriteRule ^(.*)$ http%{ENV:SSL}://www.%{HTTP_HOST}/$1 [R=301,L]
        #Подставляем www и https если он включен.
    
    ############################################################################
    #### Перенаправляем протокол https на http                              ####
    ############################################################################
    #RewriteCond %{ENV:HTTPS} on
       # Проверяем наличие https в URL.
    #RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
       # Перенаправляем протокол на http.
    
    ############################################################################
    #### Перенаправляем протокол http на https                              ####
    ############################################################################
    #RewriteCond %{ENV:HTTPS} !on
       # Проверяем наличие https в URL.
    #RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
       # Перенаправляем протокол на http.

    Тут все для битрикса, а проблема у вас с циклом из за nginx+apache конфигурации.
    https://klondike-studio.ru/standards/standartnyy-h...
    Ответ написан
    Комментировать
  • Что лучше header() vs htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    У каждого из инструментов есть свови плюсы.
    HTACCESS
    + "ожидаемое" место для таких вещей, и SEOшник полезет туда в их поиске.
    + Есть много готовых пресетов и гернраторов для правил.
    - Странное поведение редиректов ( нужно хорошо знать mod_rewrite чтобы понимать что и почему происходит)
    - не работает на nginx и iis
    - трудность создания редиректов с гет параметрами.
    - большое количество редиректов снижает производительность сайта ( Но на практике не заметно)

    php
    + нет проблем с редиректами GET параметров
    + нет последовательности кодов типа 301 +301 +301+200
    + можно сделать редирект типа сделать 301 если текущий статус урла 404 да и вообще можно положить в
    404.php ( в .htaccess тоже можно но через ...)
    + сработает на любом веб сервере
    -нестандартное место и искать их никто не будет
    -seo шник не знает php
    Ответ написан
    Комментировать
  • Правила htaccess с сохранением протокола?

    shambler81
    @shambler81 Куратор тега htaccess
    Все описывал тут и слеш и соханение протокола.
    https://klondike-studio.ru/standards/standartnyy-h...
    Ответ написан
    Комментировать
  • Как изменить URL с GET запросами через .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    GET не является частью урла а следовательно выделяется другим способом, скобки вокруг гета, посколку вы не знаете какой из параметров будет первым, а какой пойдет через &
    Все что вам остается узнать это
    Первая скобка из RewriteRule - это $1 а вот если вы хотите взять ее же но из RewriteCond то это уже %1
    Если же вам надо вовсе удалить гет параметра, так поставьте в конце урла куда знак вопроса, он удалит все геты.


    # 301 --- http://shop.wildorchid.ru/Catalog/StyleCard.aspx?&shop=2&categoryid=2046&style=27647 => http://shop.wildorchid.ru/catalog/nizhnee_bele/1467-twin-set/trusy_slip_31/?offer=18120
    RewriteCond %{QUERY_STRING} (^|&)shop=2($|&)
    RewriteCond %{QUERY_STRING} (^|&)categoryid=2046($|&)
    RewriteCond %{QUERY_STRING} (^|&)style=27647($|&)
    RewriteRule ^Catalog/StyleCard\.aspx$ /catalog/nizhnee_bele/1467-twin-set/trusy_slip_31/?offer=18120 [L,R=301]


    ну и что-то вроде такого получится
    RewriteCond %{QUERY_STRING} (^|&)cstart=([0-9{1,}])($|&)
    RewriteRule ^/index.php$ /filter/novinki/page/%2? [L,R=301]

    Где %2 это вторая группа скобок из стринга
    а сама скобка ([0-9{1,}]) цифры от нуля до 9 не менее 1 раза.
    Ответ написан
  • Как сделать 301-редирект через htaccess с заменой символа?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{QUERY_STRING} (^|&)id=(.+)($|&)
    RewriteRule ^catalog/page\.php$ /catalog/page.php@id=%2 [L,R=301]

    ну или экранировтаь собаку
    RewriteCond %{QUERY_STRING} (^|&)id=(.+)($|&)
    RewriteRule ^catalog/page\.php$ /catalog/page.php\@id=%2 [L,R=301]

    А нахрена вам сей символ в урле ?
    Ответ написан
    Комментировать
  • Как убрать "/" в конце ссылок MODX?

    shambler81
    @shambler81 Куратор тега htaccess
    так он правильно делает, вам по хорошему их нужно добавлять.
    RewriteCond %{REQUEST_URI} \..+$
    # Если файл содержит точку. 
    RewriteCond %{REQUEST_FILENAME} !-d 
    # И это не директория. 
    RewriteCond %{REQUEST_FILENAME} -f
    # Является файлом. 
    RewriteCond %{REQUEST_URI} ^(.+)/$ 
    # И в конце URL есть слеш. 
    RewriteRule ^(.+)/$ /$1 [R=301,L] # Исключить слеш.
    Ответ написан
    1 комментарий
  • Как сделать редирект со всех URL раздела /cat/* на page.php с сохранением URL?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{REQUEST_URI} ^/cat/(.*)$ 
    # если есть этот каталог то выделить все после него
    RewriteCond %{REQUEST_FILENAME} !-f
    # и это не файл
    RewriteCond %{REQUEST_FILENAME} !-l
    #и это не  линка
    RewriteCond %{REQUEST_FILENAME} !-d
    # и это не директория
    RewriteCond %{REQUEST_FILENAME} !/page.php$
    # и  в урле нет пеййдж пхп
    RewriteRule ^(.*)$ /page.php [L]


    RewriteRule ^(.*)$ /dir1%1 [R=301,L]
    Ответ написан
  • Как сделать rewrite на поддомен?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{HTTP_HOST} ^(www\.|)domain\.com [NC]
    # исключаем цикл, по этому проверяем наличие домена или его же с ввв
    RewriteCond %{QUERY_STRING} (^|&)login=test($|&)
    #проверяем GET параметр и запоминаем его как %2 (поскольку скобка уже 2, первая и 3 это всего лишь поскольку гет может быть и в середине  уже после &
    RewriteRule ^/user(.*)$ /? http://%2.domain.com/$1[L,R=301]
    # первая  %2  вторая скобка из cond  $1 это скобка из  RweriteRule

    Проверить надо но работать должно.
    Ответ написан
    Комментировать
  • Не получается сделать редирект с http:// на https://, через htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    1. поставь редирект перед ЧПУ
    2. не все сервера понимают именно такую конструкцию, хотя все верно, в интернете есть куча вариантов написания, просто перебери.
    Как настроить редирект на https в.htaccess?
    и не забудь что у тебя есть езе зеркало с ввв
    ему тоже нужно сделать редирект, или включить его в регулярку.
    Ответ написан
    Комментировать
  • Как убрать get параметр ymclid через .htaccess, добавляемый Яндекс Маркетом?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{QUERY_STRING} (^|&)show-uid=160964544213342035117011($|&)
    RewriteCond %{QUERY_STRING} (^|&)nid=57280($|&)
    RewriteCond %{QUERY_STRING} (^|&)fesh=440498($|&)
    RewriteCond %{QUERY_STRING} (^|&)context=search($|&)
    RewriteRule ^product/1840001118$ /product/1840001118? [L,R=301]

    Тут я тебе показал как можно выедлить каждый гет по отдельности, плюс как удалить их вовсе. ( в направление куда обрати внимание на вопрос в конце, именно он удаляет все гет параметры)

    Ни если тебе нужно удалить какой-то один то все что тебе нужно собери регулярку
    Переменные из конд это не $1$2 и тд а %1%2 и так далее
    В твоем случае нужно сделать редирект только одного параметра вот только с ним и работай, остальную часть урла оставляй без изменений.
    Да и в с строке куда, не забудь поставить экран перед вопросом, ведь это спецсимвол как-никак.
    Кстати равно в гет помоему тоже экранируются.
    Ответ написан
    6 комментариев
  • Как правильно реализовать массовый редирект 301 с параметрами фильтра?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{REQUEST_URI} ^(.*)/s-obratnaya_svyaz-est/(.*)$ 
    RewriteRule ^(.*)$ %1/obratnaya_svyaz/%2 [R=301,L]
    Ответ написан
    3 комментария
  • Как правильно настроить .htaccess при переносе сайта в подкатегорию?

    shambler81
    @shambler81 Куратор тега htaccess
    open_basedir: /home/account/site.com этож нахреа козе баян?
    Если не понимаешь в чем проблемам, сделай "символическую ссылку", пусть будет папка доступна по обоим адресам. тебе жалко чтоли?
    Зато не нужно будет разбираться что происходит.
    А еще лучше исправь doceumentroot в виртуалхосте веб сервера.
    Ответ написан
  • Редирект htaccess не работает?

    shambler81
    @shambler81 Куратор тега htaccess
    Во первых у тебя цикл, поскольку нет проверки на текущий протокол урла
    Во вторых редиректы со странисчками сайта естественно до чпу желательно отлаживать а не после него.
    Ну и главное Браузер как только видит https ни вжизнь не захочет перейти на http и если в заголовках будет http то сам браузер всеравно будет упорно лезть на https. Клал он болт на твои исключения.
    Ответ написан
  • Есть ли возможность указать в .htaccess директиву ErrorDocument для всех ошибок?

    shambler81
    @shambler81 Куратор тега htaccess
    ErrorDocument 400 /error/400.html
                            ErrorDocument 401 /error/401.html
                            ErrorDocument 403 /error/403.html
                            ErrorDocument 404 /error/404.html
                            ErrorDocument 405 /error/405.html
                            ErrorDocument 500 /error/500.html
                            ErrorDocument 502 /error/502.html
                            ErrorDocument 503 /error/503.html

    И да код передать можно но зачем, их не так много и текст к ним нужно писать отдельно.
    Ответ написан
    Комментировать
  • Реврайт без редиректа на wordpress?

    shambler81
    @shambler81 Куратор тега htaccess
    1. ln younglinux.info/bash/link.php дешево и сердито.
    2.nginx + apache и опять же дешево и более сердито.
    3. У апача тоже есть мод прокси, но его нужно доставлять.
    4. Переписать index.php ( зависит от движка и че там намутили)
    5. Возможно подойдет редирект со статусом 200
    6. documentroot изменяем вvirtualhost ( правильный способ)
    Ответ написан
    Комментировать
  • Почему пропадает файл .htaccess в сайте на joomla?

    shambler81
    @shambler81 Куратор тега htaccess
    гыгы Включи его в админке
    Ответ написан
    Комментировать
  • Как настроить ЧПУ через .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    Гет не является частью урла и по этому он и не выделяется
    RewriteCond %{QUERY_STRING} (^|&)id\=1($|&)
    RewriteRule ^search$ /search/1? [L,R=301]

    RewriteCond %{QUERY_STRING} - ловим сам гет по краям группы это знак & поскольку гет может быть в любом месте ( в вашем случае вообще можно убрать)
    В конце реврайт рула стоит знак ? он удалит гет парметры.

    Теперь отсалось приветси это в жизнеспособный вид
    мы заменяем цифру 1 на регулярку и вставляем е ев реврайт рул, а поскольку рул сам может групировать то вместо $ используются %
    RewriteCond %{QUERY_STRING} (^|&)id\=(.+)($|&)
    RewriteRule ^search$ /search/%2? [L,R=301]
    Ответ написан
    Комментировать
  • Как сделать дополнительное ЧПУ по Get параметрам?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{QUERY_STRING} (^|&)newstype\=(+*)($|&)
    RewriteRule ^baza\-znanij$ /baza-znanij/%2? [L,R=301]


    Ваще изи
    для этого нам поднадобится
    1. GET не является частью урла так что его можно выцепить только отдельно RewriteCond %{QUERY_STRING}
    2. гет парметр может начинаться так и заканчиваться с & так и с & (^|&)тут гет($|&)
    3. экранируем \=
    4. групиируем нужный вам гет в скобки ( они тут уже по счету будут вторые) (+*)
    5. Вставляем его в реврайт рул, но поскольу $ уже заняты самим рулом то группы из cond будут не $ а %, вставляем вторую группу, она же скобки. %2
    6. удаляем гет парметры, ставим в конце ?
    Ответ написан
    Комментировать
  • Настройка исключения редиректа?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !^/myfile.php
    RewriteRule .* index.php [L]


    Знак отрицания работает во всех условиях
    !
    Ответ написан
    Комментировать