Для моего сайта у меня есть 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]