Вопрос

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

/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].

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top