HTACCESS - блокировать все, кроме указанного SEO дружественного URL - PullRequest
0 голосов
/ 17 октября 2010

Я не нашел ответа на мою текущую проблему.

Вот корень сайта:

  • кеш
  • 1008 * IMG *
  • display.php
  • admin.php

Мне нужно заблокировать весь прямой доступ к файлам и разрешить доступ только через URL, отформатированный так:

1 ht * p: //sub.domain.com/image/param/size/folder/img.jpg (параметр, размер, папка, img являются параметрами)
2 ht * p: //sub.domain.com/action/param1/param2/ (param1, param2 - параметры)

1 будет указывать на display.php с правильными параметрами
2 указывает на admin.php с правильными параметрами
Любой другой доступ должен быть 404 (в лучшем случае) или 403

мои правила (htaccess находится в ht * p: //sub.domain.com/):

RewriteRule ^image/([^/]+)/([0-9]+)/([^/]+)/([^/]+)\.jpg display.php?param=$1&size=$2&folder=$3&img=$4 [L]
RewriteRule ^action/([^/]+)/([^/]+) admin.php?action=$1&param=$2 [L]

Эти правила работают так, как я хочу, но я застрял на том, как заблокировать любой доступ, который не приходит с этих URL!

Также (в качестве бонуса) я хотел бы иметь возможность использовать один и тот же htaccess на другом веб-адресе без необходимости изменения этого файла.

Заранее спасибо

1 Ответ

0 голосов
/ 17 октября 2010

Вы пытались переместить изображение из общедоступной папки и использовать php для вызова изображения?

Для файлов PHP вы можете использовать оператор switch (http://www.php.net/switch).

Для файла admin.php вы можете сделать что-то вроде:

$get_action = $_GET['action'];

switch ($get_action) {
    case "edit":
    case "view":
    case "delete":
    case "add":
        //Continue loading the page
        break;
    default:
       header('HTTP/1.1 403 Forbidden');
       die();
}

Примечание: я не знаю, как ваш код выглядит или работает, но вы можете иметь представление о коде, который я добавил.

...