.htaccess переписывать url на страницу или каталог

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