Мой текущий .htaccess выглядит так:
RewriteEngine On
# RewriteCond %{REQUEST_URI} !^/_project
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
# RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^.*$ index.php [QSA,L]
Некомментированные строки довольно просты:
- Два
Cond
обеспечивают, что Rule
не применяется к существующим файлам (!-f
) и папкам (!-d
).
-
Rule
отправляет все остальное на index.php
Некомментированные строки, которые я взял откуда-то. Я считаю, что это лучший способ сделать то, что мне нужно: «красивые URL».
В основном это работает. Существующие файлы (например, /css/general.css
) являются запрашиваемыми, а несуществующие пути (например, /admin/login
) направляются в index.php. Существующие и несуществующие пути должны быть в состоянии работать «друг с другом»: /css/all.css
иногда представляет собой буферизованный существующий файл CSS, а иногда (когда он не существует) обрабатывается PHP. /css/general.css
это всегда файл. /css/club_N.css
(N - это число) всегда является сценарием PHP.
/_project/
- это существующая папка с базовой защитой HTTP-аутентификации. Например, /_project/phpinfo.php
также работает. В папке _project
я создал (действительную) символическую ссылку на папку резервных копий: /_project/backups/
. Каким-то образом (существующие) файлы в папке резервных копий не могут быть достигнуты. Например, /_project/backups/today.bz2
перенаправляется на index.php = (То же самое происходит с одной или двумя закомментированными строками.
Что не так с конфигом htaccess? Если я полностью удалю Rewrite, я получу 403 Forbidden
. Возможно, что-то с .htaccess
в папке _project
(?).
PS. Очевидно, я не могу показать вам реальный сайт. Людям не понравится, если вы сможете загрузить их резервные копии =)