Задать вопрос

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]


Но как заставить эти вещи работать одновременно?
  • Вопрос задан
  • 3884 просмотра
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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]
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽