2009-08-06 3 views
1

Для моего сайта у меня есть RewriteRule, который указывает URL http://www.mysite.com/work в файл work.php. У меня также есть каталог под названием «work», в котором есть файлы, такие как project1.php, project2.php и т. Д..htaccess переписывание url на страницу или каталог

Какие правила мне нужно написать, чтобы URL http://www.mysite.com/work знал, что нужно идти на работу .php, но URL http://www.mysite.com/work/project1 знает, что я хочу зайти в каталог «работать» и отобразить файл project1.php?

EDIT: Должен отметить, это то, что я в настоящее время работает с:

RewriteEngine On 
RewriteBase /beta/ 
RewriteRule ^([a-z]+)$ $1.php [L] 

Любые дополнительные советы по улучшению этой точки зрения безопасности? (Остановка каталогов прыжки, и т.д ...)

ответ

4

Попробуйте это:

RewriteEngin On 
RewriteBase/
RewriteRule ^work$ /work.php [QSA,L] 

Это будет гарантировать, что http://www.mysite.com/work (не слэш) будет идти в файл work.php.

Если вы также хотите, чтобы http://www.mysite.com/work/ (с завершающей косой чертой) отправился work.php, добавьте эту строку чуть выше последних RewriteRule.

RewriteRule ^work/$ /work [R=301,QSA,L] 

Это будет перенаправлять его в URL, без лидирующий слэш, таким образом, отображение файла work.php.

UPDATE: Поскольку у вас уже есть RewriteBase директиву, просто поставить RewriteRule линию (ы) сразу после RewriteBase, но перед вашим RewriteRule как правило, вы используете улов-все и будет соответствовать всем.

+0

Вы ответили, прежде чем я включил мой текущий файл .htaccess, кажется, не работает, если я просто добавить свой материал в. Возможно, что-то делать с тем, что я в настоящее время? – roflwaffle

+0

@Brandon, я обновил свой ответ, чтобы он соответствовал вашей ревизии. – matpie

-1

Попробуйте это правило:

RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule .* $0.php [L] 
+0

В чем проблема? – Gumbo

+0

Я не тот, кто проголосовал за это, но я думаю, причина в том, что ваше правило слишком агрессивное и будет соответствовать любому файлу, который существует, а не просто '/ work', чего хочет OP. – matpie

0

Это ответ на ваш вопрос. Меня устраивает.

RewriteEngine On 
RewriteBase/
RewriteRule ^([a-z]+)$ $1.php [L] 

Просто удалить beta/

Смежные вопросы