Почему правило в htaccess файле не выполняется?

Как настроить перенаправление с адреса `site.ru/15` на `site.ru/15/index.php`, не меняя отображаемый url в браузере? Текущее правило работает, но добавляет к url окончательный слеш. Как исправить ситуацию и сохранить исходный url?
  • 21 июля 2024 г. 18:22
Ответы на вопрос 2
Если правило в `.htaccess` файле не выполняется, возможно, есть ошибка в самом правиле или оно перекрывается другими правилами в файле или в других конфигурационных файлах сервера.

Чтобы настроить перенаправление с адреса `site.ru/15` на `site.ru/15/index.php` без изменения отображаемого URL в браузере и без добавления окончательного слеша, можно использовать следующее правило в файле `.htaccess`:

```apache
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/15/index.php
RewriteRule ^15$ /15/index.php [L]
```

Это правило проверит, что URL не уже `/15/index.php` и перенаправит все запросы с `/15` на `/15/index.php`, не изменяя отображаемый URL в браузере.
<blockquote>на выходе получается url с конечным слешем.</blockquote> <br/> /15/ это существующий каталог и <a href="https://httpd.apache.org/docs/2.4/mod/mod_dir.html#directoryslash" rel="nofollow">mod_dir</a> добавляет завершающий слеш. <br/> Чтобы отключить это нужно добавить <code class="apache">DirectorySlash off</code> <br/> В файл <code>/15/.htaccess</code> или <code>/.htaccess</code>
Похожие вопросы