Lighttpd url.rewrite - PullRequest
       21

Lighttpd url.rewrite

1 голос
/ 20 февраля 2011

Я хотел, чтобы все мои файлы .php в моей папке / framework / были доступны без расширения .php. Поработав некоторое время в Интернете, я нашел это:

    url.rewrite = ( 
  "^/framework/([^?]*)(\?.*)?$" => "$1.php$2",
)

Но, конечно, это имело последствия, так что теперь, если я обращаюсь к / framework / (localhost / framework /), он не загружает файл index.php (localhost / framework / index.php). Вместо этого он дает 404.

Как мне сделать так, чтобы любая папка выходила за пределы @ / framework / и загружала каталоги файла index.php?

Так как

локальный / рамки / контроллер /

будет

локальный / каркас / контроллер / index.php

и т.д.

Я довольно новичок в этом, так что если бы вы могли объяснить мне, что вы сделали, это было бы здорово. Как вы можете видеть, я не лучший в регулярных выражениях.

1 Ответ

10 голосов
/ 20 февраля 2011

Добавьте правило специально для путей с конечной косой чертой:

url.rewrite = (
  "^/framework([^?]*/)(\?.*)?$" => "/framework$1index.php$2",
  "^/framework/([^?]*)(\?.*)?$" => "/framework/$1.php$2"
)

А вот пример работы регулярного выражения:

^          // Match the beginning of the string
/framework // Match any string starting with "/framework"
(          // Open the first group ($1 in the right hand side)
  [^?]*    // Match zero or more characters that are not '?'
  /        // Ending in '/'
)          // Close the first group
(          // Open the second group ($2)
  \?       // Match a '?'
  .*       // Match zero or more characters
)          // Close the second group
?          // Match the second group exactly once or not at all
$          // Match the end of the string
...