Apache эквивалент url lighttpd.rewriteonce для lighttpd?
-
13-09-2019 - |
Вопрос
У меня есть точка входа в мое приложение, подобная этой.
/app/index.php <-- this is the main dispatcher.
И папки, относящиеся к конкретному приложению, в разделе /app/
/app/todo/
/app/calendar/
/app/bugtrack/
Каждая папка приложения содержит файлы, специфичные для конкретного приложения.
Я хотел бы передать все запросы приложению unders для прохождения через /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.
Кто-нибудь может подсказать мне, как это сделать?
Решение
RewriteEngine On
RewriteBase /app
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
Что это делает, так это если запрос не является именем файла или каталогом, перепишите его в index.php.Затем проверьте $_SERVER[REQUEST_URI]
.