2009-07-10 6 views
1

Je suis en train de réécrire une URL de ceci: http://www.foo.com/bar/bazrewrite .htaccess d'une url [aide à la règle]

à

index.php q = 1 & $ d = baz

Où barre n'est pas une valeur fixe, mais baz est.

RewriteRule ^(.*)\/baz$ index.php?q=$1&d=baz [L,QSA] 
    RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 

Ce que je ci-dessus Kinda fonctionne mais me brise malheureusement l'inclut dans le site (css/javascript) mais étrangement toutes les pages de travail:/

Ceci est une drupal installation, (de sorte que le la deuxième ligne doit rester).

MISE À JOUR

Cela pourrait réellement aider, j'oublié d'inclure

RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} !=/favicon.ico 
    **RewriteRule ^(.*)/details index.php?q=$1&details=true [L,QSA]** 
    RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 

Il semble faire correctement mon rewrite, le seul problème est qu'il est ignorant les autres déclarations conditionnelles maintenant, à savoir qu'il est toujours en train d'essayer de réécrire les fichiers existants (ie css, js) quand c'est un moyen de les éviter.

le site est très bien sans ma ligne (celle avec les étoiles), mais avec elle, les variables et les pages fonctionnent, mais les fichiers statiques comme css etc. sont également en cours de réécriture .... besoin d'arrêter ça!

Merci d'avance.

Shadi

+0

À quoi sert la deuxième règle? – Greg

+0

La deuxième règle est une règle drupal pour réécrire toutes les URL et les envoyer dans son cadre. Donc, fondamentalement, je dois capturer toutes les URL qui se terminent par baz, puis les envoyer à index.php de drupal en leur disant que c'est la page "bar" (qui change toujours), et définir une variable get de d = baz (fixe) . Sinon (si baz n'existe pas) continuer comme d'habitude. –

Répondre

0
RewriteRule ^(.*)/details index.php?q=$1&details=true [L,QSA] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} !=/favicon.ico 
    RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 

C'est ce qui a finalement fonctionné. il a juste fallu réorganiser les règles ...

1

Les conditions ne s'appliquent qu'à la première règle qui suit immédiatement. Essayez donc de dupliquer les lignes de condition.

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/details index.php?q=$1&details=true [L,QSA] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !=/favicon.ico 
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 
+0

Presque, vous avez posté cela comme je l'ai repositionné la règle, il semble que c'était juste en conflit en raison de l'ordre, mais en plaçant ma règle ci-dessus travaillé sans les éléments conditionnels. Merci pour votre aide de toute façon! :) –