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

Как убрать слеш в конце главной страницы?

Делаю проект с единой точкой входа. В корне лежит htaccess, который перенаправляет все запросы:
DirectorySlash Off
Options -Indexes

RewriteEngine On
RewriteBase /

#RewriteRule ^$ public/index.php [L]

RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ public/$1 [L]


Я использую локальный сервер wamp. Проблема в том, что при заходе на главную страницу в конце добавляется слеш. Как от него избавится? Пробовал делать редирект пустого запроса на index.php - не помогло.
На настроенном хостинге всё окей - слеша нет. В идеале хотелось бы, чтобы слеша не было в независимости от того, как настроен сервер. Или подскажите какая настройка отвечает за это в апач (отключал mod_dir - получал 500 ошибку).
  • Вопрос задан
  • 124 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
PyBig
@PyBig
Помогите решить мои проблемы!
Чтобы убрать слеш в конце главной страницы на локальном сервере (WAMP), нужно учитывать, что Apache по умолчанию сам добавляет слеш к URL, если воспринимает путь как директорию — это делает модуль mod_dir. Даже если ты используешь DirectorySlash Off, это работает только в некоторых случаях, когда Apache явно распознаёт директорию, а не перенаправляет запрос через mod_rewrite.

Решение:
Добавь это правило в начало .htaccess, до всех RewriteRule:

RewriteEngine On

# Удаление лишнего слеша на главной странице
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /+\ HTTP/
RewriteRule ^$ / [R=301,L]

Это правило отлавливает начальный запрос к / и делает редирект на URL без слеша.
Почему это работает

Apache добавляет слеш, чтобы обработка index-файлов внутри директорий работала корректно. Однако при использовании единой точки входа (например, index.php в public/) это может быть не нужно. Поэтому вышеуказанное правило принудительно удаляет слеш в URL главной страницы.
Важно

Браузеры автоматически добавляют слеш, если ты набираешь localhost, поэтому даже с редиректом визуально он может остаться.

На продакшн-сервере (если всё работает без слеша) — возможно, mod_dir отключён или настроен иначе.

Удаление слеша не имеет значения для большинства случаев, но если тебе важно абсолютное соответствие URL — тогда редирект нужен.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы