HTACCESS: как заблокировать доступ ко всем файлам и папкам, но перенаправить на определенный файл PHP в определенном случае

0

Я успешно сделал невозможным доступ хакера моего сайта к фактической папке (или даже получить сообщение 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?

  • 0
    Вам нужно передать текст "abc" в файл.script xyz.php?
  • 0
    Нет, мне просто нужно перенаправить на xyz.php, который находится в корне сайта (где находится index.php, где будет находиться пользователь. См. Мой ответ на предложение Пьера ниже для получения дополнительной информации.
Показать ещё 1 комментарий
Теги:
.htaccess
redirect
mod-rewrite

2 ответа

0

Добавляя конкретный 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) было кеширование в моем браузере, поэтому я прибегал к открытию нового окна хромированного инкогнито каждый раз, когда я вносил изменения.)

  • 0
    УСПЕХ! Спасибо! Теперь он работает как на моем локальном, так и на живом сервере.
  • 0
    Подожди ... Я говорил слишком рано. Это работает в Chrome, Opera, IE и Safari, но не в Firefox. Почему Firefox не соблюдает эту директиву?
Показать ещё 3 комментария
0

Вы можете сделать это:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^abc$ "/xyz.php" [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . / [L,R=301]

Обновление: Как заметил @bloodyKnuckles, он / отсутствовал.

  • 0
    Это терпит неудачу как на моем локальном сервере, так и на моем живом сайте. Я использую XAMPP для своего локального сервера, и скажем, сайт называется XXX, папка с HTDOCS. Чтобы перейти к нему, я просто перехожу на: XXX. Когда я добавляю ваш RewriteRule, как указано, а затем добавляю «admin» после «XXX /», URL-адрес меняется на этот: XXX / localhost / C: / xampp / htdocs / XXX / admin_login.php Определение исходного URL с помощью localhost, например: localhost / xxx Получает результат после добавления «admin» в конце: localhost / localhost / C: /xampp/htdocs/XXX/admin_login.php На действующем сайте: это ничего не делает.
  • 0
    Возможно, вам потребуется добавить директиву RewriteBase /XXX сразу после RewriteEngine on .
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню