Question

J'ai mon point d'entrée de l'application comme celui-ci.

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

application des dossiers spécifiques dans / app /

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

Chaque dossier application cotains d'application des fichiers spécifiques.

Je voudrais passer toutes les demandes de l'application unders passer par /app/index.php.

Alors que.

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

Sur ma machine de test lighttpd je peux facilement le faire en écrivant une règle comme celui-ci.

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

Maintenant besoin de le faire fonctionner sur Apache en utilisant .htaccess et mod_rewrite.

Mais peu importe ce que je fais, il ne fonctionne pas.

J'ai écrit ce qui suit dans /app/.htaccess

RewriteEngine on
RewriteRule .* index.php [QSA]

Il fonctionne pour / app / et / app / todo / mais échoue pour / app / todo / liste / jour par exemple.

Tout le monde peut me donner une idée comment le faire?

Était-ce utile?

La solution

RewriteEngine On
RewriteBase /app
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

Ce que cela fait est de savoir si la demande n'est pas un nom de fichier ou un répertoire, récrire à index.php. Vérifiez ensuite $_SERVER[REQUEST_URI].

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top