URL rewriting & SPIP

  • Auteur de la discussion maitreweedoo
  • Date de début
M
maitreweedoo
Guest
Salut à tous,
Comme beaucoup, j'ai mis en place SPIP pour un site d'actualité. DEpuis 1 semaine, je suis dans les fichier .htaccess pour comprendre comment ça marche.
SPIP propose de générer des url au format html. C'est magnifique mais, la je commence vraiment à galérer.

Mon url d'origine est de type :

www.***.com/news/article.php3?id_article=xxxx

et SPIP génère bien l'adresse du type

www.***.com/news/articlexxxx.html

Le problème est que la page est introuvable. Je pense avoir bien installé le module RewriteEngine puisque je n'ai pas d'internal server Error (j'utilise EasyPhp pour les test)

J'ai pris la source du fichier .htaccess disponible dans les aide de Spip :

RewriteEngine on

# urls spip
RewriteRule ^/rubrique([0-9]+)\.html$ /rubrique.php3?id_rubrique=$1 [QSA,L]
RewriteRule ^/article([0-9]+)\.html$ /article.php3?id_article=$1 [QSA,L]
RewriteRule ^/breve([0-9]+)\.html$ /breve.php3?id_breve=$1 [QSA,L]
RewriteRule ^/secteur([0-9]+)\.html$ /secteur.php3?id_rubrique=$1 [QSA,L]

après avoir mis le fichier .htaccess dans le répertoire news
il ne trouve toujours pas la page

J'ai essayé egalement la méthode du Journal du net qui marche à 80% ( des pb d'images et de chemin d'accès)

J'ai la tête kom une bouilloire, j'aimerais bien comprendre. Je suppose que bien d'autres ont rencontrés ce pb. Si ça vous dit quelque chose.
Merci d'avance
 
M
maitreweedoo
Guest
Comment faire?

Quels est la difference entre le fichier inc-url-dist.php3 et le fichier inc-url.php3 ?

Comment faire pour qu ce fichier prenne en compte le .htaccess?

Mreci d'avance
 
WRInaute passionné
dist veut dire par défaut, il n'y pas de différence normalement il faut que tu mettes ceci dans ce fichier
<?
$type_urls = "html";
include_local("inc-urls-".$type_urls.".php3");
?>

qui lui appelera le fichier inc-url-html.php3 et après hop ça marche
 
M
maitreweedoo
Guest
Mais c'est ce qu'il y a par défaut

J'ai toujours eu ça dans ce fichier. En l'occurence, il me génère bien l'url

<?
$type_urls = "html";
include_local("inc-urls-".$type_urls.".php3");
?>

mais, il ne m'interprette pas l'url
 
WRInaute discret
maitreweedoo a dit:
RewriteEngine on

# urls spip
RewriteRule ^/rubrique([0-9]+)\.html$ /rubrique.php3?id_rubrique=$1 [QSA,L]
RewriteRule ^/article([0-9]+)\.html$ /article.php3?id_article=$1 [QSA,L]
RewriteRule ^/breve([0-9]+)\.html$ /breve.php3?id_breve=$1 [QSA,L]
RewriteRule ^/secteur([0-9]+)\.html$ /secteur.php3?id_rubrique=$1 [QSA,L]

essaie :

RewriteEngine On
RewriteRule index.html index.php3 [QSA]
RewriteRule ^(.*)article(.*).html$ $1article.php3?id_article=$2 [QSA]
RewriteRule ^(.*)rubrique(.*).html$ $1rubrique.php3?id_rubrique=$2 [QSA]
RewriteRule ^(.*)breve(.*).html$ $1breve.php3?id_breve=$2 [QSA]

et pense à vider le cache de spip et celui de ton navigateur ensuite.
 
M
maitreweedoo
Guest
Le pb vient t'il d'ici?

RewriteEngine On
RewriteRule index.html index.php3 [QSA]
RewriteRule ^(.*)article(.*).html$ $1article.php3?id_article=$2 [QSA]
RewriteRule ^(.*)rubrique(.*).html$ $1rubrique.php3?id_rubrique=$2 [QSA]
RewriteRule ^(.*)breve(.*).html$ $1breve.php3?id_breve=$2 [QSA]

Si je comprend bien, le rôle de cette commande dans le fichier .htaccess

RewriteRule ^(.*)article(.*).html$ $1article.php3?id_article=$2 [QSA]

doit interpreter cet url :
www.***.com/news/articlexxxx.html
en
www.***.com/news/article.php3?id_article=xxxx

à quoi correspond la variable $1 ?

En ce qui concerne les histoire de cache, je le vide a chaque manipulation.
Et desespéré, le résultat est toujours le meme
lors de l'affichage de l'article, j'ai bien le bon URL, c'est a dire :
www.***.com/news/articlexxxx.html
mais la page reste introuvable.

-J'ai configuré mon serveur pour qu'il accpete le module de réécriture d'url
-Les fichiers inc-url-html.php3 et inc-url.php3 sont bien la et fonctionne puisqu'il me génère l'url www.***.com/news/articlexxxx.html
-Il me semble que le problème se situe au niveau du .htaccess et que les Rules(notament celle concernant l'article. J'ai testé le code que tu ma filé, sans vraiment comprendre les differences par rapport à celui donné dans l'aide de spip.

Enfin, j'aurais une dernière question:
Imaginons que le systeme d'url rewriting marche bien. Est ce que toutes les pages référencé dans Google (avec un lien vers www.***.com/news/article.php3?id_article=xxxx) me renveront vers les bonnes pages?

Merci d'avance
C'est vraiment de la balle ce forum
 
WRInaute passionné
Salut,

Tu as mis des / en trop !

Il faut les règles suivantes, dans le .htaccess du répertoire contenant SPIP:
Code:
RewriteRule ^rubrique([0-9]+)\.html$   rubrique.php3?id_rubrique=$1 [QSA,L]
RewriteRule ^article([0-9]+)\.html$    article.php3?id_article=$1 [QSA,L]
RewriteRule ^breve([0-9]+)\.html$      breve.php3?id_breve=$1 [QSA,L]
RewriteRule ^secteur([0-9]+)\.html$    secteur.php3?id_rubrique=$1 [QSA,L]
RewriteRule ^imprimer([0-9]+)\.html$   imprimer.php3?id_article=$1 [QSA,L]
Dan
 
M
maitreweedoo
Guest
hetzeld a dit:
Salut,

Tu as mis des / en trop !

Il faut les règles suivantes, dans le .htaccess du répertoire contenant SPIP:
Code:
RewriteRule ^rubrique([0-9]+)\.html$   rubrique.php3?id_rubrique=$1 [QSA,L]
RewriteRule ^article([0-9]+)\.html$    article.php3?id_article=$1 [QSA,L]
RewriteRule ^breve([0-9]+)\.html$      breve.php3?id_breve=$1 [QSA,L]
RewriteRule ^secteur([0-9]+)\.html$    secteur.php3?id_rubrique=$1 [QSA,L]
RewriteRule ^imprimer([0-9]+)\.html$   imprimer.php3?id_article=$1 [QSA,L]
Dan

J'ai testé ce que tu m'a proposé et le résultat est toujours le même.
J'ai voulu voir d'ou venais le problème dans le script .htaccess, j'ai alors testé ça

Code:
RewriteEngine On 
RewriteRule index.html index.php3 [QSA]
RewriteRule ^article([0-9]+)\.html$    https://www.google.fr

et tous les liens qui mène vers des articles me renvoie sur google. Le problème vient donc de :

article.php3?id_article=$1 [QSA,L]

http://www.*****.com/news/article.php3?id_article=1095

peut être qu'il ne reconnais pas la variable $1
 
M
maitreweedoo
Guest
Bien sur qu'il comprend le $1

J'ai testé :

Code:
RewriteEngine On 
RewriteRule index.html index.php3 [QSA]
RewriteRule ^article([0-9]+)\.html$  http://www.******.com/news/article.php3?id_article=$1

et ça me revoit bien vers le bonne article. Mais dans ce cas on revient au point de part puisque logiquement il n'affiche plus l'url en html
 
Discussions similaires
Haut