Программное обеспечение, над которым я работаю, использует уродливые URL-адреса. Чтобы пользователям было проще делиться проектами (это пакет администрирования проекта), я хочу иметь перенаправление. Он должен перенаправить projectadmin.dev/project/1234
на какой-то другой URL. Я могу заставить это работать на ISS, используя их файлы web.config, но Apache доставляет мне головную боль.
В демонстрационных целях я сократил текущий файл .htaccess, но проблема все еще возникает:
RewriteEngine On
RewriteRule ^.*project/([0-9]+)$ RandomOtherPage.php
Когда я получаю доступ к URL projectadmin.dev/project/123
это дает мне ошибку 403 (Запрещено). Я думаю, это происходит потому, что папка project
существует в моем проекте. Когда я меняю файл .htaccess на:
RewriteEngine On
RewriteRule ^.*projects/([0-9]+)$ RandomOtherPage.php
И перейти к projectadmin.dev/projects/123
он будет работать так, как я задумал.
Мой вопрос: как мне игнорировать тот факт, что папка проекта существует, но файлы в ней все еще доступны (например, projectadmin.dev/projects/image.jpg
все равно должно работать) и есть рабочий редирект с цифрами?
Попробуйте отключить MutliViews
. В верхней части вашего .htaccess
файл:
Options -MultiViews
Если у вас не было .htaccess
файл, расположенный в /project
подкаталог, который также содержит директивы mod_rewrite, тогда не должно быть проблем, существует папка или нет.