.htaccess правила перенаправления и перезаписи
Содержание
Требования : Для этого требуется модуль mod_rewrite в apache. Это включено по умолчанию во всех системах KnownHost.
Файлы .htaccess можно использовать в корневом каталоге документов веб-сайта (например, /home/user/public_html/) для перенаправления посетителей веб-сайта из одного документа на вашем веб-сайте в другой. Правила .htaccess являются рекурсивными, что означает, что правила, записанные в /home/user/public_html/.htaccess, будут применяться к /home/user/public_html и /home/user/public_html/test/directory, если конкретное правило не отменено правилом в файл .htaccess в каталоге под ним.
Существуют различные типы перенаправлений, которые можно выполнять с помощью файлов .htaccess. Давайте разберем их и разберем каждый тип, прежде чем научиться их использовать.
301 (постоянная) переадресация
Это наиболее распространенный тип, который обычно следует использовать. Хотя разница между 301 и 302 небольшая, она заметна. 301 (постоянный) означает, что старый URL ссылки (URL переадресации) больше не используется. В то время как перенаправление 302 предполагает, что старый URL временно отключен и вскоре вернется.
302 (временное) перенаправление
Как было сказано ранее, перенаправление 302 является временным решением перенаправления. Это также правило перенаправления по умолчанию в Apache. Таким образом, при определении вашего метода/варианта вам нужно знать, является ли это постоянным перенаправлением или временным.
Для всех целей документации/статьи мы будем использовать переадресацию 301.
Создание файла .htaccess и загрузка его на ваш сервер
Создать файл .htaccess для переадресации 301 или 302 очень просто. Вам просто нужно открыть свой любимый редактор текста/документов и создать новый пустой файл. Добавьте соответствующий код/содержимое в документ и сохраните файл как «htaccessrules.txt». После того, как вы подтвердили точные правила внутри документа, используйте свой любимый клиент FTP или SFTP и загрузите документ в корневой каталог документов вашего веб-сайта (public_html). После того, как вы загрузили документ, просто переименуйте его в .htaccess 9.0003
Через SSH или терминал это легко сделать с помощью вашего любимого текстового редактора (например, nano или vim), создав новый файл локально.
Сценарии перенаправления и примеры кода
Вот несколько примеров некоторых общих вещей, для которых используются правила перезаписи или перенаправления .htaccess.
Перенаправление URL-адреса одной страницы (файла html/php) на другой
Перенаправление 301 /retiredpage.html http://www.knownhosttest.com/newpage.html
Перенаправление URL-адреса папки/каталога (включая все подсодержимое) к другому 9(.*)$ http://www.knownhosttest.com/$1 [L,R=301]
Перенаправить http на https (форсировать https)
Вот два отдельных примера того, как это сделать. Мы можем сделать это с помощью Redirect в блоке If:
Постоянный редирект "/" "https://domain.tld"
Это также можно сделать с помощью правил перезаписи. Возможно, было бы лучше избежать этой сложности, но если в файле .htaccess уже есть правила перезаписи, в любом случае может потребоваться использовать правила перезаписи:0003
RewriteCond %{HTTPS} выкл. RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=permanent,L]
Полезные ссылки
Попробуйте этот замечательный инструмент для создания файлов .htaccess: .htaccess Generator Tool.
Официальную документацию по перенаправлению Apache .htaccess можно найти здесь: Руководство по перезаписи Apache.
Правило перенаправления Htaccess добавляет нежелательную переменную
спросил
Изменено 2 года, 1 месяц назад
Просмотрено 104 раза
Я пытаюсь перенаправить вошедших в систему пользователей, которые попадают на страницу, на другую страницу, но перенаправление продолжает добавлять имя вошедшего в систему пользователя к пути / URL-адресу.
Допустим, я вошел в систему как Марио. Перенаправление включает это имя пользователя в путь перенаправления, вызывая ошибку 404.
Ниже приведено содержимое файла .htaccess (без редиректа): 9.]*)$ [NC] Правило перезаписи (.*) index.php
Это мой редирект:
Редирект /photo/useralbums /my-profile
В результате пользователь оказывается по адресу: /my-profile/Mario
- htaccess
- редиректы
- mod-rewrite
- mod-alias 9010 8 2
Перенаправление /photo/useralbums /my-profileВ результате пользователь оказывается на:
/мой-профиль/Марио
Это произойдет, если запрос предназначен для /photo/useralbums/Mario
, поскольку директива mod_alias Redirect
соответствует префиксу, и все после совпадения копируется в конец целевого URL.
Если вам нужно перенаправить все URL-адреса формы /photo/useralbums/
на /my-profile
, вам нужно либо использовать директиву mod_alias RedirectMatch
, которая соответствует использованию регулярного выражения и не совпадающий с префиксом, или используйте mod_rewrite Директива RewriteRule
. Поскольку вы уже используете mod_rewrite для внутренней перезаписи, вы должны использовать директиву mod_rewrite RewriteRule
для перенаправления, чтобы избежать потенциальных конфликтов в будущем. (Различные модули Apache запускаются независимо и в разное время во время запроса. mod_rewrite всегда запускается перед mod_alias, несмотря на очевидный порядок директив в вашем файле
.)
Перенаправления обычно должны идти с до 9photo/useralbums(/[\w-]*)?$ /my-profile [R,L] Обратите внимание, что шаблон RewriteRule
не содержит префикса косой черты.
Приведенное выше перенаправит /photo/useralbums
, /photo/useralbums/
или /photo/useralbums/<имя пользователя>
(но не /photo/useralbums/
) на / мой профиль
. Где
может состоять из символов a-z
, A-Z
, 0-9
, _
или -
.
Однако это не определяет, «вошел ли» пользователь в систему или нет, как предлагается в вашем вопросе, поскольку перенаправление является безусловным.
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google Зарегистрироваться через Facebook Зарегистрируйтесь, используя электронную почту и парольОпубликовать как гость
Электронная почтаОбязательно, но не отображается
Опубликовать как гость
Электронная почтаТребуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.