Как настроить .htaccess, чтобы показать 404 для недопустимых URL-адресов? - PullRequest
0 голосов
/ 21 сентября 2011

Я заметил в Drupal, если вы добавляете .php в строку URL любой страницы, она дает вам сообщение 404;чистые URL включены.Страница, очевидно, является .php, но .htaccess препятствует тому, чтобы пользователь мог вмешиваться в расширения URL в строке URL.Как вы могли бы сделать это с помощью .htaccess.У меня нет расширений в данный момент, но я также хотел бы добавить эту функцию.Спасибо.Кроме того, этот вопрос не относится к Drupal.Я упомянул только Drupal и например.

Ответы [ 3 ]

2 голосов
/ 21 сентября 2011

Если файл содержит код PHP, это не значит, что он должен иметь расширение .php;тем более, когда вы получаете доступ к файлу через Интернет.

Когда вы запрашиваете http://mysite.com/page и используете .htaccess, как в Drupal, запрос перенаправляется на index.php?q=page, после чегоDrupal проверит свою базу данных на соответствие пути page.Если он найдет его, он отобразит контент для этой страницы, если нет, то он (правильно) даст 404.

Если вы хотите, чтобы все ваши страницы были доступны с расширением PHP, вы можете добавить дополнительное правилов вашем файле .htaccess, чтобы удалить .php из любого запроса, где файл PHP физически не существует:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.php $1 [NC]

Имейте в виду, что это добавляет нулевую дополнительную ценность для посетителей вашего сайта (на самом делеони должны помнить расширение файла, а также путь к странице), и в нем раскрывается, какую именно серверную технологию вы используете, чтобы потенциальный злоумышленник мог выполнить для него часть своей работы.

Надеюсь, это поможет.

1 голос
/ 21 сентября 2011

Не могли бы вы объяснить это более подробно.Как он может перенаправить контент на существующую страницу?Это обычная практика / типичный способ ведения дел?

Да, это очень распространенная практика, используемая большинством фреймворков и CMS.

Принцип прост: вы настраиваете свой .htaccess, так что каждый запрос, который не соответствует реальному файлу или каталогу, будет перенаправлен на фронт-контроллер, обычно это index.php в корневом каталоге приложения.Этот фронт-контроллер обрабатывает запрос, анализируя URL-адрес и вызывая необходимые действия.

Таким образом, вы можете свести к минимуму правила перезаписи до одной, и вы можете предложить настроенные 404 страницы.

0 голосов
/ 21 сентября 2011

Я не знаю, Drupal, но в обычном приложении php каждый запрос направляется на фронт-контроллер, который выполняет некоторые проверки и выдает 404 ошибки.
простой Peasy

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...