2010-03-13 7 views
1

J'ai modifié un site Web avec une redirection vers une page unique:Réécriture Apache avec beaucoup de barre oblique ne fonctionne pas?

RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

Il fonctionne comme supposé être. Tout est redirigé vers index.php. Voici un exemple que l'affichage index.php avec toutes les images et css:

http://.....com/section1 

Le problème se produit lorsque je tente:

http://....com/section1/subsection 

La page est redirigé vers index.php, mais pas les images, pas de css, pas de javascript. A l'intérieur du tout script PHP est comme ceci directement lié aux images ou css ou javascript comme:

<img src="images/images1.png> ... <img src="images2.png"> 

Pourquoi url avec beaucoup slash comme .com ../ 123/123/ce qui ne fonctionne pas avec les images, css ou javascript quand .com/no_slash_url fonctionne?

+0

BTW "^. * $" Devrait être "^ (. *) $" "^ = Start" "() = Groupe" « $ = Final " – Shuriken

+0

@Daok qu'est-ce que vous voulez réaliser - voulez-vous * que toutes les images soient analysées par index.php, ou voulez-vous * pas * que les images soient analysées par index.php? –

+0

Je veux être capable de voir des images, javascript et CSS de toute page php mais je déplace tout le site avec un contrôleur frontal (dans index.php) qui inclura la bonne page .php. –

Répondre

2

Vous réécrivez sans redirection, donc le client pense que c'est à l'URL originale non écrite et tous les chemins relatifs seront résolus par rapport à cette URL. Vous devriez être en mesure de contourner cela en utilisant l'élément <base>:

<base href="http://myserver.com" /> 


Je vais essayer de clarifier cela par un exemple. Si j'ai une page au http://mysite.com/index.php et toutes ses images sont au http://mysite.com/images/, mes images pourraient être référencées avec un relatif comme images/myImg.png. Le client traduit cette URL en utilisant le chemin actuel dans la barre d'adresse. Maintenant, si je réécris mes URL de sorte qu'elles ressemblent à http://mysite.com/mycategory/myarticle, toutes les images relatives se résoudraient à http://mysite.com/mycategory/myimages/, ce qui est incorrect. En ajoutant la balise de base:

<base href="http://mysite.com" /> 

Chaque navigateur résoudra maintenant les images par rapport à cette voie au lieu, à la recherche correctement pour http://mysite.com/images/.

+0

Cela ne va-t-il pas faire que dns recherche toutes les images, css et javascript pour rien? –

+0

Daok: Je ne suis pas sûr de comprendre ce que vous voulez dire. La balise '' est utilisée pour spécifier l'URL dans laquelle les autres URL relatives sont résolues. Cette technique est utilisée par de nombreuses applications de réécriture d'URL telles que Joomla & Drupal. –

+0

Je ne comprends pas cela. Pourquoi utiliser une balise 'base' et pas simplement'/images/xyz.jpg'? Mais alors, je ne comprends pas vraiment ce que l'OP veut encore. –

0

Jetez un oeil à la html base tag

<base href="http://www.mysite.com/" /> 
Questions connexes