2010-09-25 2 views
3

Bonjour.url réécriture du problème de répertoire (htaccess)

J'ai actuellement cette petite règle dans mon .htaccess

RewriteEngine On 
RewriteBase/
RewriteRule ^brochure/([0-9]+)$ /brochure.php?cat_path=$1 [L] 

(je suis juste en utilisant des nombres par exemple ici, seront les noms de catégorie plus tard.)

Cette réoriente parfaitement, mais quand il fait, tout ce que j'ai dans les répertoires échoue maintenant (css, js, images, includes etc)

Je comprends le problème (il jette la structure du répertoire).

La modification de la règle permet de résoudre les problèmes d'images, de css et de JS.

RewriteRule ^([0-9]+)$ brochure.php?cat_path=$1 [L] 

Mais ce n'est pas ce que je veux vraiment.

Quelle est la bonne façon de faire url réécrit et maintenir la structure du répertoire?

Merci, j'ai cherché par le biais des questions précédentes, mais je n'ai pas trouvé de réponse appropriée.

Répondre

2

Vous devez utiliser des chemins absolus ou relatifs à l'Webroot, comme:

<img src="http://example.com/image.gif" alt="" /> 
<img src="/images/image.gif" alt="" /> 

Si vous savez que vos images sont toujours en place d'annuaire, ce sera aussi une option:

<img src="../images/image.gif" alt="" /> 
+0

pour tout? y compris tous mes fichiers js, css et php? Je pensais qu'il y aurait une façon plus efficace de le faire. :( – shane

+0

L'inefficacité * n'est pas dans l'utilisation de chemins absolus, mais dans l'utilisation de chemins relatifs, c'est quelque chose que vous devrez corriger plus tôt ou plus tard –

+0

Ok, merci pour le conseil. rends ma vie plus difficile à l'avenir Merci les gars. – shane

0

Bien que je recommande honnêtement la réponse de Lekensteyn, il y a aussi une autre solution. Votre règle mod_rewrite passe essentiellement /brochure.phpcat_path=123 à /brochure/123. Vous pouvez simplement corriger vos URL relatives et définir le bon chemin. Vous devez comprendre que ces chemins sont analysés par le navigateur de sorte que la structure réelle du système de fichiers du serveur n'a rien à voir avec cela.

.: css/style.css sera par exemple devenir ../css/style.css