Перепишите правила - выходя за пределы докрута - PullRequest
1 голос
/ 30 ноября 2008

Предполагая следующую структуру каталогов,

htdocs/
  images/
  css/
  .htaccess
system/
  index.php
  ...

Я бы хотел направить все входящие запросы через этот php-скрипт. Я пробовал некоторые правила перезаписи в htaccess, но я не могу маршрутизировать файлы, находящиеся за пределами корня документа. Я не смог найти причину этого в руководствах по Apache, поэтому в итоге прибегнул к «Включить» файл конфигурации Apache, где правила другие.

Есть ли способ переписать вне docroot?

Ответы [ 2 ]

4 голосов
/ 30 ноября 2008

Что делают многие фреймворки, так это используют rewrite для маршрутизации всех запросов в один файл, где вы можете сделать более сложную собственную маршрутизацию. Пример файла .htaccess может быть:

# ignore anything that's an actual file (eg CSS, js, images) 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
# redirect all other traffic to the index page
RewriteRule ^.*$ index.php [L]

Где index.php находится в корне вашего документа (htdocs / index.php) и из которого вы можете безопасно включать System / index.php, где это необходимо.

3 голосов
/ 30 ноября 2008

Нет, вы не можете выйти за пределы докрута без потенциально огромного риска.

Вы должны поместить index.php в папку htdocs и переписать ее там, а не снаружи. Если вам нужно переписать для обработки индекса, получая доступ за пределами документа, и вы допустили одну маленькую ошибку, она потенциально может быть использована любым хакером, переписывающим строку запроса. Не красиво!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...