Apache эквивалент lighttpd url.rewriteonce? - PullRequest
1 голос
/ 22 апреля 2009

У меня есть точка входа моего приложения, как это.

/app/index.php <-- this is the main dispatcher.

И папки для конкретных приложений в / app /

/app/todo/
/app/calendar/
/app/bugtrack/

Каждая папка приложения содержит специфичные для приложения файлы.

Я бы хотел передать все запросы из-под приложения для прохождения через /app/index.php.

Так, что.

/app/todo/list/today -> goes to /app/index.php
/app/ -> goes to /app/index.php
/app/bugtrack/anything/else goes to /app/index.php

На моей тестовой машине lighttpd я могу легко это сделать, написав такое правило.

url.rewrite-once = (
    "^\/app\/todo\/*"   => "/app/index.php",
    "^\/app\/calendar\/*"   => "/app/index.php",
    "^\/app\/bugtrack\/*"   => "/app/index.php",
)

Теперь нужно заставить его работать на Apache, используя .htaccess и mod_rewrite.

Но что бы я ни делал, это не работает.

Я написал следующее в /app/.htaccess

RewriteEngine on
RewriteRule .* index.php [QSA]

Он работает для / app / и / app / todo /, но не работает, например, для / app / todo / list / today.

Кто-нибудь может подсказать мне, как это сделать?

1 Ответ

1 голос
/ 22 апреля 2009
RewriteEngine On
RewriteBase /app
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

Что делает, если запрос не является именем файла или каталогом, перепишите его в index.php. Затем проверьте $_SERVER[REQUEST_URI].

...