Я использую mod_rewrite / .htaccess для красивых URL-адресов. Я пересылаю все запросы в мой index.php, например:
RewriteRule ^/?([a-zA-Z0-9/-]+)/?$ /index.php [NC,L]
Затем index.php обрабатывает запросы.
Я также использую это условие / правило для устранения конечных слешей (или, скорее, переписываю их в URL без завершающего слеша, с перенаправлением 301; я делаю это, чтобы избежать дублирования содержимого и потому что мне не нравятся конечные слеш лучше):
RewriteCond %{HTTP_HOST} !^\.localhost$ [NC]
RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]
Это работает хорошо, за исключением того, что теперь я получаю бесконечный цикл при попытке доступа к (реальному) каталогу (правило перезаписи удаляет завершающий слеш, сервер добавляет его снова, ...).
Я решил это, установив для директивы DirectorySlash
значение Off
:
DirectorySlash Off
Я не знаю, насколько хорошо это решение, я не чувствую себя слишком уверенно в этом.
В любом случае, я хотел бы полностью игнорировать «настоящие» файлы и каталоги, поскольку они мне не нужны, и я в любом случае использую только красивые URL-адреса с «виртуальными» файлами / каталогами. Это позволило бы мне избежать обходного пути DirectorySlash
.
Возможно ли это?
Спасибо!