Exception de réécriture Apache pour ne pas inclure de répertoires spécifiques

La mise en place

Ma configuration consiste à partager des ressources pour deux sites ou plus qui ont des structures similaires avec un contenu différent. Par exemple…

http: // localhost / site1 /

http: // localhost / site2 /

Il existe deux types de réécriture, le contenu CMS (à peu près uniquement le contenu renvoyé à la page) et les modules spéciaux (module logiciel de blog, par exemple) dans lesquels un logiciel permet de gérer plus spécifiquement le contenu de la firebase database.

Ainsi, la première règle de réécriture du blog garantit que le module de blog traite les demandes de blog ….

http: // localhost / site1 / blog / *

http: // localhost / site2 / blog / *

… en utilisant le logiciel du module de blog situé à …

http: // localhost / blog /

La règle de réécriture du CMS est destinée à traiter les requêtes de module non spécifiques …

http: // localhost / site1 / *

http: // localhost / site2 / my_page.html *

… en utilisant le logiciel de réécriture CMS situé à …

http: // localhost / rewrite.php

Le problème

Le module de blog et les réécritures du module CMS sont en conflit. J’ai essayé de faire une exception en utilisant la règle suivante. Voici mon code …

RewriteEngine on RewriteCond %{REQUEST_URI} !\.js$ RewriteRule .*/blog(.+) blog$1 [QSA] RewriteRule !.*/(admin|blog|forums)(.+)$ rewrite.php 

La dernière règle ne fonctionne pas réellement. Avec ce code si j’accède ..

http: // localhost / site1 / blog / *

http: // localhost / site2 / blog / *

… tout URL de blog (ou admin ou forums) pour tout site est toujours en cours de réécriture pour fonctionner avec localhost / rewrite.php.

Alors, comment puis-je ajuster la dernière règle pour répondre aux conditions suivantes, s’il vous plaît …

1.) Le premier répertoire (site1 ou site2 dans localhost / site1 / blog) rest dynamic donc je peux append un troisième site si je le souhaite sans avoir à réajuster le code pour quelque raison que ce soit à cet égard.

2.) Que l’index du blog (ou de l’administrateur ou des forums) (par exemple, blog /, forums /, admin /) soit géré par ses propres modules ainsi que tout ce qui se trouve dans ces répertoires (par exemple admin / 1, admin / test.html) indépendamment du code HTTP, 200, 404, etc.

3.) Toute URL qui ne figure pas dans la liste des exceptions de la dernière règle est gérée par rewrite.php (indépendamment du code HTTP, 200, 404, etc.).

4.) localhost / site1 / blog / n’est pas géré par rewrite.php et localhost / site1 / random_path n’est pas géré par la réécriture du module blog.

Je serai ravi de répondre rapidement avec d’autres précisions.

Grâce à une version antérieure de RewriteCond, quelqu’un a écrit que c’était logique, je l’ai adapté et ça a bien fonctionné!

Notez que si quelqu’un décide d’utiliser ce code, les conditions ne fonctionnent apparemment qu’après les règles de réécriture spécifiques aux modules (admin, blog, forums) AVANT la règle rewrite.php du CMS.

Je serai heureux d’honorer toute critique positive.

 RewriteEngine on RewriteCond %{REQUEST_URI} !\.(css|js|zip)$ RewriteRule .*/admin(.+) admin$1 [QSA] RewriteRule .*/blog(.+) blog$1 [QSA] RewriteRule .*/forums(.+) forums$1 [QSA] #individual... RewriteCond %{REQUEST_URI} !.*/admin RewriteCond %{REQUEST_URI} !.*/blog RewriteCond %{REQUEST_URI} !.*/forums #condensed... RewriteCond %{REQUEST_URI} !.*/(admin|blog|forums) RewriteRule !\.(css|js|zip)$ rewrite.php