Для моего сайта у меня есть RewriteRule, который указывает URL http://www.mysite.com/work в файл work.php. У меня также есть каталог под названием «work», в котором есть файлы, такие как project1.php, project2.php и т. Д. …
Какие правила мне нужно написать, чтобы URL-адрес http://www.mysite.com/work знал, чтобы перейти в файл work.php, но URL-адрес http://www.mysite.com/work/project1 знает, что я значит зайти в каталог «работать» и отобразить файл project1.php?
EDIT : Должен отметить, это то, с чем я сейчас работаю:
RewriteEngine On RewriteBase /beta/ RewriteRule ^([az]+)$ $1.php [L]
Какие-нибудь дополнительные советы по улучшению этой безопасности? (Остановка переходов каталога и т. Д.)
Попробуй это:
RewriteEngin On RewriteBase / RewriteRule ^work$ /work.php [QSA,L]
Это гарантирует, что http://www.mysite.com/work (без work.php косой черты) пойдет в ваш файл work.php .
Если вы также хотите, чтобы http://www.mysite.com/work/ (с завершающим work.php ), чтобы перейти на work.php , добавьте эту строку чуть выше последнего RewriteRule .
RewriteRule ^work/$ /work [R=301,QSA,L]
Это приведет к перенаправлению на URL-адрес без work.php косой черты, отображая файл work.php .
UPDATE: поскольку у вас уже есть директива RewriteBase , просто поместите строки RewriteRule сразу после RewriteBase но до вашего RewriteRule как правило, вы используете catch-all и будете соответствовать всем.
Это ответ на ваш вопрос. Меня устраивает.
RewriteEngine On RewriteBase / RewriteRule ^([az]+)$ $1.php [L]
Просто удалите beta/
Попробуйте следующее правило:
RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule .* $0.php [L]