2009-06-14 5 views
2

J'ai besoin de deux règles conditionnelles. Contexte:Deux règles de réécriture

 
http://www.domain.com/.htaccess 
http://www.domain.com/index.php 
http://www.domain.com/admin/index.php 

Je les règles ré-écriture:

 
ROOT: 
RewriteEngine On 
RewriteCond %{QUERY_STRING} ^(.*)$ 
RewriteRule ^(.*/)([^/]+)/([^/]+) $1?$2=$3&%1 [L] 
RewriteCond %{QUERY_STRING} ^(.*)$ 
RewriteRule ^([^/]+)/ $1.php?%1 [L] 

ADMIN: 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-z]+?)/([a-z]+?)/(.*)$ index.php?model=$1&view=$2&params=$3 [L,NS] 

je dois avoir seulement un fichier .htaccess en quelque sorte sur l'utilisation du niveau de la racine les règles, mais les règles ADMIN appliquent uniquement lorsque l'URL http://www.domain.com/admin/foo/bar/something/else et la règle ROOT s'applique à http://www.domain.com/foo/bar/something/else.

Merci d'avance, j'ai tué une journée entière en essayant de faire cela et quand l'un fonctionne l'autre me donne une erreur de page "Not Found".

Kris

+0

Duplicata de http://stackoverflow.com/questions/992054/subfolders-and-mod-rewrite – jitter

+0

jitter: pouvez-vous répondre à ma question, s'il vous plaît? Pourquoi poster un commentaire si ce n'est pas constructif? – Torez

Répondre

1

j'utiliser ceci:

RewriteEngine On 

# /admin/ rule 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^admin/([a-z]+)/([a-z]+)/(.*)$ admin/index.php?model=$1&view=$2&params=$3 [L,NS] 
RewriteRule ^admin/ - [L] 

# other rules 
RewriteRule ^(.*/)([^/]+)/([^/]+)$ $1?$2=$3 [L,QSA] 
RewriteRule ^([^/]+)/ $1.php [L,QSA] 

Le drapeau QSA (chaîne de requête append) remplacer les RewriteCond %{QUERY_STRING} (.*) directives.

2
RewriteCond %{REQUEST_URI} !^/admin/ 
RewriteCond %{QUERY_STRING} (.*) 
RewriteRule ^(.*/)([^/]+)/([^/]+) $1?$2=$3&%1 [L] 
RewriteCond %{REQUEST_URI} !^/admin/ 
RewriteCond %{QUERY_STRING} (.*) 
RewriteRule ^([^/]+)/ $1.php?%1 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^admin/([a-z]+?)/([a-z]+?)/(.*)$ /admin/index.php?model=$1&view=$2&params=$3 [L,NS] 
+0

Vous voudrez peut-être ajouter des commentaires ou un paragraphe expliquant vos conditions. –

+0

chaos: merci pour votre réponse rapide. Cela ne semble pas fonctionner si ...? J'ai même essayé de changer quelques trucs et toujours pas de chance :( – Torez

+0

Quelques modifications faites maintenant. – chaos