Apache .htaccess Переписать строку запроса с косой чертой - PullRequest
0 голосов
/ 05 августа 2011

Я пытаюсь выяснить Apache Mod Rewrite, и пока он не работает. Вот что я пытаюсь сделать.

У меня есть index.php в корневом каталоге моего сайта, который является шаблоном для всех страниц. Я хочу иметь возможность организовывать свои файлы в каталогах, и строка запроса будет иметь косую черту.

Итак ...

http://www.example.com/page.html

должно быть ...

http://www.example.com/index.php?url=page

и ...

http://www.example.com/directory/page.html

должно быть ...

http://www.example.com/index.php?url=directory/page

У меня это работает, но я хочу, чтобы можно было углубиться в каталоги n ...

http://www.example.com/directory1/directory2/page.html

должно быть ...

http://www.example.com/index.php?url=directory1/directory2/page

Я знаю, что мог бы просто написать несколько переписок для сколь угодно большого количества каталогов, которые я хочу изучить, но есть ли одна строка RewriteRule, которая поместит что-нибудь после первого / будет считаться строкой запроса?

Это то, что я имею до сих пор ...

RewriteEngine on
RewriteRule ^([a-z-]+)\.html$ index.php?url=$1
RewriteRule ^faculty/([a-z-]+)\.html$ index.php?url=faculty/$1

За кулисами PHP включает файл, который находится в том месте, где указан URL-адрес.

Ответы [ 2 ]

1 голос
/ 06 августа 2011
  1. Это плохая идея включать файл, имя которого было передано от пользователя.По крайней мере, используйте очень СИЛЬНУЮ проверку, иначе подготовьтесь к взлому.

  2. Если вы все еще хотите использовать это - вот правило:

    RewriteRule ^(.+)\.html$ index.php?url=$1 [QSA,L]

0 голосов
/ 06 августа 2011

это должно перенаправить что-либо с конечным .html в index.php? Url = что-нибудь

www.example.com => index.php? Url = www.example.com/test1/test2 =>index.php? url = test1 / test2

        RewriteRule ^([a-z-]+)\.html$ index.php?url=$1   [L,NC]
...