Изменить имя файла с помощью.htaccess
Мой главный вопрос, по соображениям безопасности, я хотел бы знать, возможно ли фактически изменить имя (в некотором смысле) файла веб-сайта, используя.htaccess. Например, если у меня есть файл /index.php
и я хочу сделать так, чтобы /mysite
перенаправлены на /index.php
но я тоже хочу звонить /index.php
возвращаться как ошибка 403 или 404. Возможно ли это? И если так, как это можно сделать?
Кроме того, я искал полную документацию по синтаксису директивы.htaccess, но ничего не смог найти. Мой второй вопрос: кто-нибудь знает хороший общий справочник по всем директивам и их синтаксису? (Я даже не мог найти один в w3schools)
1 ответ
Сначала я скажу, что у w3schools нет хороших ссылок ни на что. Документация Apache mod_rewrite действительно хороша, и я всегда иду туда первым.
Первая часть вашего запроса довольно проста как переписать. Но прежде чем мы доберемся, давайте начнем с предотвращения прямых запросов к index.php
, Для того, чтобы сделать это без путаницы с другими нашими правилами, мы будем использовать %{THE_REQUEST}
переменная для соответствия index.php
и запретить доступ.
RewriteEngine On
# If the request sent by the browser includes index.php...
RewriteCond %{THE_REQUEST} index\.php
# forbid access (403)
RewriteRule ^. - [F]
# Then you just need a generic rule to rewrite /mysite into index.php
RewriteRule ^mysite index.php [L]
Нам нужна первая часть, используя THE_REQUEST
чтобы избежать конфликтов со второй частью, переписывающей в index.php.
Если вы хотите служить 404, чтобы он выглядел как index.php
даже не существует, заменить [F]
с [R=404,L]