Назад | Перейти на главную страницу

Преобразуйте mod-rewrite в lighttpd для меньшего сокращения URL

Я пытаюсь использовать меньше, сокращатель URL-адресов Шона Инмана на моем сервере lighttpd, и он использует файл .htaccess для перенаправления. Я не очень хорошо разбираюсь в Mod_Rewrite - не в первую очередь, иначе было бы достаточно простого поиска в Google, чтобы преобразовать это для lighttpd. Как бы то ни было, я не знаю, что делают 2-я и 3-я строки Mod_Rewrite, поэтому я не могу конвертировать. Буду признателен за любой совет по ним, чтобы он работал так, как должен. Спасибо!

<IfModule mod_rewrite.c>
    RewriteEngine   on
    RewriteCond     %{REQUEST_FILENAME}     !-d
    RewriteCond     %{REQUEST_FILENAME}     !-f
    RewriteRule     (.*) index.php?token=$1 [QSA,L]
</IfModule>

Эти две строки указывают модулю mod_rewrite Apache НЕ применять правило перезаписи к файлам (f) и каталогам (d), которые физически существуют в файловой системе:

RewriteCond     %{REQUEST_FILENAME}     !-d
RewriteCond     %{REQUEST_FILENAME}     !-f

В течение долгого времени lighttpd не поддерживал это поведение из коробки, и вам приходилось использовать mod_magnet с lua-скриптом, как в этом примере:

http://drupal.org/node/43782

Однако, похоже, сейчас поддержка есть:

http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ModRewrite#urlrewrite-repeat-if-not-file

Итак, просто используйте эту конструкцию перезаписи в своем lighttpd.conf, например:

url.rewrite-if-not-file = (
  "^/(.*)$" => "/index.php?q=$1"
)

Надеюсь, что это помогает и удачи!