Для внешнего перенаправления /about.php
(и /about
- без косой черты) в /about/
(для поисковых систем и сторонних организаций, которые могли проиндексировать / связать старый URL), вам необходимо добавить что-то вроде следующего до вашего существующего переписывания:
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^about(\.php)?$ /about/ [R=302,L]
Условие, которое проверяет переменную окружения REDIRECT_STATUS
, состоит в том, чтобы гарантировать, что мы перенаправляем только прямые запросы, а не переписанные запросы с более поздним переписыванием. REDIRECT_STATUS
пуст при первоначальном запросе и после первого перезаписи устанавливается в состояние HTTP (т. Е. "200" в случае успеха).
Шаблон RewriteRule
соответствует обоим /about
и /about.php
и перенаправляет на /about/
.
Обратите внимание, что это 302 (временное) перенаправление. Измените его на 301 (постоянный) - если это является намерением - как только вы подтвердите, что он работает нормально. Это сделано для того, чтобы избежать проблем с кэшированием (браузер постоянно кэширует 301). Аналогичным образом, если вы ранее экспериментировали с 301-м, вам необходимо убедиться, что браузер очищен перед тестированием.
ОБНОВЛЕНИЕ: Если бы я хотел сделать это на нескольких страницах
Если у вас всего две страницы (как в вашем примере / комментарии), то вы можете объединить оба правила в одно (вместо дублирования блока правил). Например:
RewriteEngine On
RewriteBase /
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(about|contact)(\.php)?$ /$1/ [R=302,L]
RewriteRule ^(about|contact)/$ $1.php [END,QSA,NC]
Обратная ссылка $1
будет содержать «около» или «контакт» из группы захвата в шаблоне RewriteRule
.