Bonjour,

Dans le cadre de mon blog, je suis amené à faire de la redirection d'url. Classique donc

Si la page fait appel à /article-id/ alors je redirige sur page=article&id=x etc..
Quand c'est des pages, ça fonctionne bien. Mais là où le bordel monstre arrive, c'est quand y a des images. Je controle pu rien du tout et je suis clairement pas assez calé (même malgrés la doc) pour m'en dépatouiller

Voici mon htaccess actuel :

RewriteEngine On
RewriteRule ([a-zA-Z0-9\-]+)-([0-9]+)/ index.php?page=article&article=$1&id=$2
RewriteRule page/categories/([0-9]+)-([a-zA-Z0-9\-]+)/ index.php?page=categories&categorie=$2&id=$1
RewriteRule page/([a-zA-Z\-]+) index.php?page=$1
RewriteRule page/([0-9]+)/ index.php?page=$1
RewriteRule core/css/([a-zA-Z0-9\-]+.css) core/css/$1
RewriteRule core/js/([a-zA-Z0-9\-]+.js) core/js/$1
RewriteRule core/images/([a-zA-Z0-9\-@_]+.[a-zA-Z]+) core/images/$1
ErrorDocument 404 /404.php

Quand c'est sur "page/" ça fonctionne bien. Quand c'est sur "core/...", c'est de la bidouille que j'ai du faire parce qu'il pétait un plomb.
Le code que vous voyez là fonctionne, mais en écrivant un article où je fais appel à des images situées dans le dossier /uploads/albums/2016-2017/image.jpg

Ca fonctionne pu, il me redirige sur l'accueil si je me rend à l'adresse de l'image.
Le problème est le tiret -
Pas de tiret, ça fonctionne, un tiret, ça fonctionne pu. Je me dis donc que ça interfère avec mon code ci dessus, mais incapable de dire pourquoi, où etc..

Si vous pouviez m'aider, ça serait gentil de votre part, merci ! :)

5 réponses


Huggy
Réponse acceptée

Si tu penses que les images passent par la première rule (page=article) il suffit de mettre une condition devant pour qu'elle ne traite pas les fichiers.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ([a-zA-Z0-9\-]+)-([0-9]+)/ index.php?page=article&article=$1&id=$2

Pourquoi tu fait de la redirection sur tes sources ?

RewriteRule core/css/([a-zA-Z0-9\-]+.css) core/css/$1
RewriteRule core/js/([a-zA-Z0-9\-]+.js) core/js/$1
RewriteRule core/images/([a-zA-Z0-9\-@_]+.[a-zA-Z]+) core/images/$1

Puisque après pour les images il te suffit de les récupérer en absolue http://www.mondomaine.fr/core/images/mon_image_dans_l_article.jpg

Genki
Auteur

Pourquoi ? J'en sais rien, je sais que ça ne chargeait pas les fichiers sans ces lignes :x
Et le problème c'est que justement, en me rendant même à l'image en absolu, ça me redirige à l'accueil. (Si il y a tiret dans l'arborescence)

Genki
Auteur

Bon en faite, le problème des sources, c'était juste que le chemin n'était pas en absolu. (Genre le fichier css était chargé en ./path/fichier), je l'ai donc rendu en absolu, et ça m'a permis d'enlever quelques lignes

Mais ça règle pas mon problème premier :/

Genki
Auteur

Merci Huggy ! Ca fonctionne après ça. En revanche, j'ai du mal à comprendre le "pourquoi"