htaccess перенаправляет все URL, заканчивающиеся на .php, в индекс - PullRequest
0 голосов
/ 06 января 2011

Я настроил свой .htaccess следующим образом:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1 [QSA]

Мой index.php загружает файл из / страниц, например.index.php? page = home загрузит содержимое страницы из pages / home.php

Однако - если кто-то зашел на pages / home.php, страница загружается без заголовков и т. д., что нежелательно.Что я могу добавить, чтобы перенаправить любые URL, заканчивающиеся на .php, чтобы просто перевести пользователя на домашнюю страницу?

Спасибо

Ответы [ 2 ]

1 голос
/ 06 января 2011

Отдельная RewriteRule (без условия файла существует) для ^(.*)\.php$ должна работать.Но почему люди пытаются получить доступ к .php напрямую?Если нет веской причины, лучше запретить каталог.

..)

edit: includejection: Подумайте, что произойдет, если кто-то даст вам интересное имя страницы, например page=http://foo.com/exploit, запустит ли его ваш скрипт?Как насчет page=/etc/passwd или page=/../../../etc/passwd, вы распечатаете файл пароля?page=`mysqldump …`, вы дадите копию своей базы данных?

0 голосов
/ 07 января 2011

Это должно перенаправить pages/anything.php на index.php?page=anything:

RewriteCond %{REQUEST_URI} \.php$
RewriteRule ^(.*/)?([^/]*)\.php$ /index.php?page=$2 [R=301,L]

обратите внимание на советы по безопасности выше. включить инъекцию плохо ..

...