Я успешно сделал невозможным доступ хакера моего сайта к фактической папке (или даже получить сообщение 404, если имя непапка введено после основного URL-адреса) с этим листом.htaccess:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . / [L,R=301]
Это работает отлично. Тем не менее, я хочу, чтобы это было так, что если кто-то добавит текст ABC после URL-адреса, то сайт будет перенаправлен на XYZ.PHP. Например:
www.mysite.com/abc
... перенаправляет на:
www.mysite.com/xyz.php
(ABC и XYZ - это просто заполнители для фактического текста, очевидно.) Каков наиболее эффективный способ сделать это, сохраняя при этом все, что выполнил выше код.htaccess?
Добавляя конкретный RewriteRule до того, как правило "catch-all" с косой чертой /
перед xyz.php
работать в моей настройке.
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^abc$ /xyz.php [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . / [L,R=301]
Использование прямой косой черты направляет apache для поиска пути подстановки в корневом каталоге веб-сервера. (Как добавленное примечание, перенаправление (R=301
) было кеширование в моем браузере, поэтому я прибегал к открытию нового окна хромированного инкогнито каждый раз, когда я вносил изменения.)
Вы можете сделать это:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^abc$ "/xyz.php" [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . / [L,R=301]
Обновление: Как заметил @bloodyKnuckles, он /
отсутствовал.
RewriteBase /XXX
сразу после RewriteEngine on
.