Редирект сайта htaccess: Редирект через .htaccess | REG.RU

Что такое htaccess, редирект через htaccess и изменение адресов с mod_rewrite

Файл «.htaccess» (с точкой в начале названия файла) — это конфигурационный файл Apache. Он позволяет изменять глобальные настройки в некоторых конкретных директориях. К примеру, делать переадресацию (редиректы), отключать обработку PHP файлов. Файл «.htaccess» — это текстовый документ, который можно изменить в любом текстовом редакторе. Обычно на хостингах данный файл изначально присутствует в корневой папке сайта. Но вы можете создать несколько файлов «.htaccess» в любых подпапках. Тогда правила будут перезаписываться.

Простой редирект через .htaccess


Разберём одну из самых популярных задачу, которую возлагают на файл «.htaccess» — это переадресация посетителя сайта на другую страницу. Откройте файл .htaccess в корневом каталоге сайта и в самом начале, первой строчкой напишите:

Redirect 301 / https://mousedc. ru


301 означает, что во время перенаправления пользователя сервер выдаст код ответа 301-«Permanent Redirect», что означает, что документ перенесён на новый навсегда.

Некоторые возможные HTTP статусы:
301 — документ перемещен постоянно
302 — документ перемещен временно
303 — смотрите другой документ
403 — документ запрещён к просмотру
404 — документ не найден
410 — документ убран


Слеш «/» после 301 означает, что перенаправление будет срабатывать в любом случае, к какой бы странице или файлу не обратился пользователя. Если вместо слеша поставить адрес файла, к примеру:

Redirect 301 /folder/page1.php https://mousedc.ru


— то будет происходить переадресация только в том случае, если пользователь запросит страницу «/folder/page1.php».

Последним параметром для Redirect стоит адрес страницы, на которую будет сделано перенаправление. В примере это «https://mousedc.ru».

Редирект с регулярным выражением через .htaccess


Существует возможность сделать редирект по регулярному выражению. То есть в случае, если запрашиваемый адрес подходит под регулярное выражение, то будет происходить редирект:

RedirectMatch 301 (.*) https://mousedc.ru$1 


Чтобы понять, что происходит в этом коде, рекомендуем прочитать все статьи о регулярных выражениях, начиная с Регулярные выражения в PHP. Если кратко, то образуется карман (.*), значение которого подставляется в самый конец домена, вместо $1 в строке https://mousedc.ru$. В кармане находится относительный адрес запрашиваемой страницы (то есть без домена).

Использование регулярного выражения полезно для переадресации обращения к файлам. К примеру, сделаем переадресацию при запросе jpg картинок:

RedirectMatch 301 (.*\. product/([0-9]+)/?$ product/index.php?id=$1 [L]



При таком правиле пользователь будет заходить на страницу mousedc.ru/product/5/, а сервер будет возвращать содержание страницы mousedc.ru/product/index.php?id=5.

В конце правила можно заметить квадратные скобки. В эти скобки [ ] ставятся флаги. Можно поставить один флаг, к примеру, [L] и несколько флагов через запятую [NC,R=301,L]. Приведём значения самых популярных из них:

  • R — вызывает редирект. Можно казать после этого флага код ответа сервера, например [R=301]
  • L — останавливает процесс изменения адреса. Означает, что следующие RewriteRule после этой строчки не будут выполнены
  • N — перезапускает преобразование адреса заново, начиная с первого правила. Но на этот раз подставляется адрес, изменённый в процессе проделанных преобразований. Будте осторожны, чтобы не сделать бесконечный цикл
  • C — если следующее после этого правило не выполняется, то преобразование будет прервано. (.*)$ http://site.ru/$1 [L,R=301]

    apache — перенаправить один URL-адрес на другой URL-адрес с помощью .htaccess

    спросил

    Изменено
    1 год, 7 месяцев назад

    Просмотрено
    66 тысяч раз

    Поскольку я пытаюсь перенаправить один полный URL-адрес

     http://www.domain-name.com/download/?page=download
     

    На этот URL

     http://www.domain-name.com/download/show
     

    Чтобы это работало, я добавил этот код

     rewriterule http://www.domain.com/download/?page=download(.*)$ http://www.domain.com/download/show$1 [ г=301,нк]
     

    Но это не работает, и вместо этого он говорит, что URL-адрес, который я запрашиваю, говорит «Запрещено».

    Кто-нибудь может дать какое-нибудь решение для этого.

    • апач
    • .htaccess

    1

    Перенаправление одного URL-адреса на другой URL-адрес с помощью файла htaccess:

     Перенаправление 301 /en/php/project.html http://www.example.org/newpage.html
     

    RewriteRule не включает строку запроса и не включает http-хост. Кроме того, первый аргумент — это шаблон регулярного выражения. Без http-хоста вам будет соответствовать либо download/page=download(etc) , либо downloadpage=download(etc) .

    Вам понадобятся 2 правила. Тот, который перенаправляет уродливый URL-адрес на красивый URL-адрес. Одно правило должно переписать хороший URL-адрес на реальный рабочий URL-адрес: 9скачать/показать/?$ скачать/?page=download [QSA,END]

    Второе правило использует флаг QSA, что означает, что исходная строка запроса будет добавлена ​​к строке запроса в модуле перезаписи. Флаг END останавливает любую перезапись, так как L-флаг не делает этого в контексте . htaccess. END доступен только начиная с Apache 2.3.9 и вызовет внутреннюю ошибку сервера, если используется в более ранней версии. Обратите внимание, что вам, вероятно, придется изменить второе правило, чтобы оно указывало на реальный файл.

    Документацию можно найти здесь.

    Редактировать: Обратите внимание, что вы НИКОГДА не должны тестировать правила htaccess с ПОСТОЯННЫМ перенаправлением. Если вы допустите ошибку, браузер запомнит эту ошибку! Преобразовывайте временные перенаправления в постоянные перенаправления только в том случае, если все работает так, как вы ожидаете.

    6

    вы можете использовать это правило

     Перенаправление /download/?page=download http://www.domain-name.com/download/show
     

    Использовать RewriteEngine :

     RewriteEngine включен
    Перенаправление 301 http://www.domain-name.com/download/?page=download http://www.domain-name.com/download/show
     

    0

    Зарегистрируйтесь или войдите в систему

    Зарегистрируйтесь с помощью Google

    Зарегистрироваться через Facebook

    Зарегистрируйтесь, используя адрес электронной почты и пароль

    Опубликовать как гость

    Электронная почта

    Требуется, но не отображается

    Опубликовать как гость

    Электронная почта

    Требуется, но не отображается

    apache — перенаправить определенный URL-адрес на другой URL-адрес с помощью .

    htaccess

    спросил

    Изменено
    1 год, 9 месяцев назад

    Просмотрено
    61к раз

    Я хочу иметь псевдоним и перенаправить URL-адрес tz433.tld/jobs/ на страницу tz433.tld/about-us/jobs/ .

    Это то, что я уже пробовал; не получилось: 9www\.tz433\.tld/jobs/$
    RewriteRule (.*) http://tz433.tld/about-us/jobs.html [R=301,L]

    Проблема в том, что в этом корневом пути есть несколько доменов, потому что это мультисайтовая установка typo3. Так что что-то вроде «перенаправить /jobs на /about-us/jobs » не работает, потому что это должно происходить только для определенного домена (tz433).

    Следующая конкретная вещь — www.tz433.tld автоматически перенаправляет на tz433.

    This entry was posted in Популярное