Trailing slash и единая точка входа в PHP

У меня в приложении единая точка входа — index.php. Раньше я добивался этого такой строчкой в htaccess —

RewriteRule ^(.*)$ /index.php [L]

Сегодня мне понадобилось сделать trailing slash (когда вместо example.com/page открывается example.com/page/). Есть предложение сделать так —

RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /$1/ [L,R=301]


Но как заставить эти вещи работать одновременно?
  • Вопрос задан
  • 3874 просмотра
Решения вопроса 1
Wott
@Wott
они и будут работать одновременно, только без слеша будет редиректиться, а уже со слешем направляться на index.php
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Krio
попробуйте вставить следующее перед «RewriteRule ^(.*)$ /index.php [L]»
RewriteCond %{REQUEST_FILENAME} !-d # если нет папки, то
RewriteCond %{REQUEST_FILENAME} !-f # если нет файла, то
Ответ написан
Комментировать
miraage
@miraage
Старый прогер
Может поможет чем

# Базовая настройка mod_rewrite
Options +FollowSymLinks
RewriteEngine On
RewriteBase /

# Запрещаем обращения к файлам/папкам, начинающимся с точки.
RewriteRule "(^|/)\." - [F]

# Перманентное обрезание trailing slash
RewriteRule ^(.*)/$ $1 [R=301,L]

# Убираем www префикс, если SSL выключен (вроде сертификат привязывается к полному дому, не?)
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ %1%{REQUEST_URI} [R=301,L]

# Если не файл, не папка, не ссылка - принимаем все на index.php
# QSA - Query String Append - добавляем данные из QUERY_STRING
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-l
RewriteRule ^(.*)$ index.php [L,QSA]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы