Изменить имя файла с помощью.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]

Другие вопросы по тегам