URL перезаписать удаление страницы индекса - PullRequest
1 голос
/ 10 марта 2012

Я пытаюсь написать файл .htaccess, который будет

а) при переходе на mysite.com/myusername (которого не существует) будет показано содержимое mysite.com/dmp/temp/myusername

b) скрыть .php от URL

При переходе на mysite.com он показывает мне содержимое папки mysite.com/dmp/temp. Если я добавлю / index перед, то это будет работать.

Все работает как задумано, кроме этого. Как я могу убедиться, что пользователи, которые просто переходят на mysite.com, обслуживаются index.php (без фактической записи / index / или /index.php), а также не перенаправляются в папку / dmp / temp?

Код:

Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %(REQUEST_URI) !^temp
RewriteRule ^(.*) dmp/temp/$1 [L]  

1 Ответ

3 голосов
/ 10 марта 2012

Давайте рассмотрим два ваших регулярных выражения:

^([^\.]+)$

и

^(.*)

Первое: Соответствует каждому запросу, который не содержит.с длиной 1 или более.
Секунда: Совпадение с длиной от 0 или более.

Итак, если вы откроете http://mysite.com/, у вас будет пустой запрос, и ему будет соответствовать второе регулярное выражение.Это означает, что он пытается открыть dmp/temp/.

Попробуйте изменить второе регулярное выражение с ^(.*) на ^(.+).Это означает, что он будет совпадать, только если у вас есть запрос длиной 1 или более, и он не будет совпадать с http://mysite.com/.Надеемся, что затем вы перейдете к стандартному поведению, показывая файл index. * В соответствии с настройками сервера (в вашем случае index.php)

...