.htaccess переписывает URL на страницу или каталог - PullRequest
1 голос
/ 06 августа 2009

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

РЕДАКТИРОВАТЬ : Следует отметить, что это то, с чем я сейчас работаю:

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

Какие-либо дополнительные советы по улучшению безопасности? (Остановка перехода по каталогам и т. Д.)

Ответы [ 3 ]

4 голосов
/ 06 августа 2009

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

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.

ОБНОВЛЕНИЕ: Поскольку у вас уже есть директива RewriteBase, просто поместите строки RewriteRule сразу после RewriteBase, но перед RewriteRule как правило, которое вы используете универсальный и будет соответствовать всем.

0 голосов
/ 03 декабря 2013

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

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

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

0 голосов
/ 06 августа 2009

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

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule .* $0.php [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...