URL перенаправления внутри .htaccess - PullRequest
0 голосов
/ 19 ноября 2018

Я новичок в .htaccess.Я хочу перенаправить URL-адрес , заканчивающийся без косой черты на один с косой чертой, как показано ниже:

Redirect www.mydomain.com/page1 www.mydomain.com/page1/ 

Это не работает.Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Вы не используете домен в Redirect, только путь

Redirect /page1 /page1/

Это будет работать только на определенных путях. Если вам нужен более общий подход, используйте RewriteRule из модуля mod_rewrite с регулярным выражением

RewriteRule ^(.*[^/])$ /$1/ [R=302,L,QSA]

Это проверит любую строку, которая не заканчивается на /, и добавит косую черту в 302 Redirect. Это довольно много информации происходит только в короткой строке кода.

Редактировать / Примечание

Я использую 302 Redirect здесь. Это может привести к штрафам Google за дублированный контент. В этом случае необходимо перенаправление 301. Поскольку не существует стандарта относительно того, следует ли кэшировать перенаправление и как долго, и должен ли цикл перенаправления приводить к перезаписи (возникают проблемы в Brave Browser с последним), Я рекомендую установить политику кэширования без кэширования для любого перенаправления. Это можно сделать, установив переменную среды при применении Rewrite и установив заголовки кэша, если задана эта переменная среды:

# Add `nocache` environment variable if rewrite
RewriteRule ^(.*[^/])$ /$1/ [R=302,L,QSA,E=nocache:1]

<IfModule mod_headers.c>
  ## Set the response header if the "nocache" environment variable is set
  ## in the RewriteRule above.
  Header always set Cache-Control "no-store, no-cache, must-revalidate" env=nocache

  ## Set Expires too ...
  Header always set Expires "Thu, 01 Jan 1970 00:00:00 GMT" env=nocache
</IfModule>
0 голосов
/ 19 ноября 2018

Для применения политики конечной косой черты:

<IfModule mod_rewrite.c>
     RewriteCond %{REQUEST_URI} /+[^\.]+$
     RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [L,R] # <- for test, for prod use [L,R=301]
</IfModule>

РЕДАКТИРОВАТЬ: прокомментировал R = 301 частей, потому что, как объяснено в комментарии:

Будьте осторожны с этим R = 301! Наличие там делает кеш многих браузеров .htaccess-файл до бесконечности: он как-то становится необратимым, если Вы не можете очистить кеш браузера на всех машинах, которые его открывали. когда тестирование, лучше идти с простым R или R = 302

После того, как вы закончили свои тесты, вы можете использовать R = 301. Ты можешь попробовать этот. Скопируйте в файл htaccess следующее, чтобы добавить косую черту на ваш сайт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...