2009-05-21 6 views
1

Je suis nouveau dans ce mod_rewrite. J'ai été avec succès en mesure de réécrire l'URL quelque chose comme ceci: http://mydomain.com/products/12 à ceci: http://mydomain.com/products.php?prodId=12mod_rewrite URL requis

Mais quand je donne http://mydomain.com/products/12 dans la barre d'adresse, les fichiers CSS et js ne sont pas chargés. Mais quand j'accède à http://mydomain.com/products.php?prodId=12, js et css sont chargés correctement. S'il vous plaît laissez-moi savoir s'il me manque quelque chose.

Mon .htaccess ressemble à ceci:

Options +FollowSymlinks 
RewriteEngine on 
RewriteRule ^products/([0-9][0-9])/$ /products.php?prodId=$1 [L] 

Mon js et css dossiers sont également dans le même dossier.

Répondre

3

Vous devez utiliser des liens relatifs à vos fichiers script/css, comme ceci:

<script src="my.js"></script> 

Cela fonctionne pour votre ancienne URL, mais la nouvelle, il regardera dans le répertoire « produits », qui bien sûr n'existe pas. Vous pouvez utiliser urls absolue à la place:

<script src="/my.js"></script> 
5

Vous devez savoir que les URIs relatives (donc les chemins URI absolus et par rapport aussi) sont résolus à partir d'un URI de base qui est - sinon explicitement déclarée - l'URI du document en cours . Par conséquent, si vous référencez des ressources externes à partir de /products/12 avec l'adresse URI relative foo/bar, il est résolu à /products/foo/bar. Pour résoudre ce problème, utilisez des chemins URI absolus (commençant par /) ou des URI absolus (en commençant par le protocole) ou définissez explicitement une URI de base autre que le courant (voir BASE HTML element). Mais notez que la modification de l'URI de base a des effets secondaires car elle affecte tous les URI relatifs.