Bonjour,

Je voudrai renommer mes urls, donc utiliser l'url rewriting mais rien ne marche. J'ai testé plusieurs tuto dont celui sur ce site, mais j'ai toujours l"erreur 500.

Je suis en local, sur wamp, je suis allé dans apache>>apache module et le rewrite-module est bien coché. Faut-il faire une autre manip?

Dans www, j'ai un dossier "portfolio" et dedans il y a mon index.php, le .htaccess, un dossier pages (avec toutes mes pages), un dossier CSS, un dossier img...

Mon index.php est composé comme ceci :

<body>
<div id="page">

     <div id="header">
        <?php include('inc/header.php');?>
     </div> 

      <div id="menu">
      <?php include('inc/menu.php');?>
     </div>

                  <div id="contenu">

                      <?php $pagesAutorisees = array('accueil', 'portfolio', 'photoshop', 'flash', 'contact', 'montage_photo', 'actualite', 'deo-nature', 'ecole-alternance', 'cine-inscription', 'shakira', 'cine-etudiant', 'vendre-maison');

                     if (!empty($_GET"contenu"]) && in_array($_GET"contenu"], $pagesAutorisees)) include('pages/'. $_GET'contenu'].'.php');
                     else include ('pages/accueil.php');?>
                  </div>       

 <div id="footer">
      <?php include('inc/footer.php');?>
  </div>  
</div>

</body>

Mes liens ressemble à ça :

http://localhost/portfolio/index.php?contenu=portfolio
http://localhost/portfolio/index.php?contenu=photoshop

Dans mon .htaccess il y a ce code :

RewriteEngine on
RewriteBase /
RewriteRule ^(.+)$ portfolio/index.php?contenu=$1 [L]

J'ai parcouru plusieurs tuto, donc il y a eu différentes choses dans mon.htaccess.

Quand je vais sur mon site, il y a ce message qui s'affiche à la place de mon site :
_
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, admin@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log._

Si quelqu'un peut m'aider, peut-être que le code qu'il y a dans mon .htaccess n'a ni queue ni tête.

Merci d'avance pour votre aide!

Bonne journée

PS: désolé de la longueur du post, je voulais être sûr que vous aviez toutes les données nécessaires pour me guider.

19 réponses


PhiSyX
Réponse acceptée

Hello, si tu sais voir => http://www.dailymotion.com/video/k2S1cWG09DxDQy20MnK - La vidéo est sans son (Pas de micro :p)
Tu ne devrais *normalement* pas avoir de problèmes
J'ai mis un répertoire "Portfolio", "pages", "pages/css,js" et un .htaccess. Ça fonctionne bien... ^^

(Ps: dans la vidéo j'ai fait un truc de nul pour l'include, pas prendre exemple :p (J'ai désactivé mon .htaccess de base au cas où))

Hello, regarde dans le fichier d'erreur d'apache, colle nous l'erreur.
PS: Mauvaise idée de tout rediriger sur portfolio/etc... ^^

disney
Auteur

J'ai regardé dans le fichier d'erreur d'apache mais il y a 3579 lignes, c'est énorme, je peux pas tout coller ici.

Pourquoi est-ce une mauvaise idée de tout rediriger sur portfolio/etc... ? Que faut-il faire alors?

Merci!

Hello, regarde la/les dernière(s) ligne(s) ;)

<u>.htaccess</u>: Tu auras sûrement ça en fin de ligne : (ou pas)

[Tue Mar 15 16:38:13 2011] [error] [client 127.0.0.1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

La redirection est trop forte

  • Donne des URLs spécifique, par exemple: il est obligatoire d'avoir un suffixe (ou préfixe) "-portfolio-" pour accéder à la page portfolio. Ça t'évitera beaucoup de problèmes

    RewriteRule ^(.+)-porfolio$ portfolio/index.php?contenu=$1 [L]

Link: <u>http://localhost/atchoum-porfolio</u>

Ou alors rajoute ceci :

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ portfolio/index.php?contenu=$1 [L]

Link: <u>http://localhost/atchoum</u> (atchoum ne doit pas exister)
Voilà, bonne journée, a bientôt :p

disney
Auteur

Coucou,

Dans mon .htaccess, j'ai mis les 4 lignes suivante :

RewriteEngine on  
  RewriteCond %{REQUEST_FILENAME} !-d  
 RewriteCond %{REQUEST_FILENAME} !-f  
 RewriteRule ^(.+)$ portfolio/index.php?contenu=$1 [L]

Ce coup-ci j'ai pas d'erreur 500 mais il ne se passe rien. Je pense qu'il faut rajouter des choses dans ce fichier, comment lui dire quel nom d'url je préfère à la place?

Mille merci!

Salut, essaye ça :

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^([a-zA-Z0-9\-]+)$ index.php?contenu=$1 [L]
</IfModule>
disney
Auteur

Re,

Je mets ce dernier code à la place de l'autre? Il n'y aura que ça dans mon .htaccess? Si oui, il ne se passe rien.

Par contre, je me demandais si je ne fais pas n'importe quoi...

index.php?contenu=$1 [L] ==> je laisse $1 ou je mets le nom de ma page? index.php?contenu=portfolio [L] ?

Dans mon menu, mes liens sont comme ceci :

<li><a href="index.php">Accueil</a></li>
<li><a href="index.php?contenu=portfolio">Portfolio</a></li>
<li><a href="index.php?contenu=photoshop">Photoshop</a></li>
<li><a href="index.php?contenu=flash">Flash</a></li>
<li><a href="index.php?contenu=contact">Contact</a></li>

Faut-il les modifier?

Mille merci! J'ai vraiment du mal avec ça... Mais c'est en forgeant que l'on devient forgerons.

Bonne soirée

En fait je pense que se qui bloque c'est que ton url index.php ne fait pas reférence à la racine de ton site mais à la racine du répertoire "portfolio/" alors essaye ceci :

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^([a-zA-Z0-9\-]+)$ portfolio/index.php?contenu=$1 [L]
</IfModule>
disney
Auteur

Je viens d'essayer le code, il ne se passe rien. Par contre, je n'ai toujours pas compris comment lui dire que tel ou tel url aura un autre nom.

Mille Merci pour ton aide!

Bonne soirée

remplace

<li><a href="index.php">Accueil</a></li>
<li><a href="index.php?contenu=portfolio">Portfolio</a></li>
<li><a href="index.php?contenu=photoshop">Photoshop</a></li>
<li><a href="index.php?contenu=flash">Flash</a></li>
<li><a href="index.php?contenu=contact">Contact</a></li>

par

<li><a href="index.php">Accueil</a></li>
<li><a href="portfolio">Portfolio</a></li>
<li><a href="photoshop">Photoshop</a></li>
<li><a href="flash">Flash</a></li>
<li><a href="contact">Contact</a></li>

Techniquement, si ton .htaccess comporte ces lignes:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^portfolio/([a-zA-Z0-9\-]+)$ portfolio/index.php?contenu=$1 [L]
</IfModule>

ça devrait marcher.

disney
Auteur

J'ai remplacé mes liens comme tu m'as dis, j'ai mis les lignes que tu m'as dis dans mon.htaccess.

Quand je click par exemple sur contact:

Mon url devient : http://localhost/portfolio/contact et le contenu (erreur 404) :
Not Found

The requested URL /portfolio/portfolio/index.php was not found on this server.

Tu crois que tu peux encore m'aider? Je suis vraiment un cas désespéré :o(

Merci beaucoup!

Edit: Par contre quand je click sur photoshop, mon url est : http://localhost/portfolio/photoshop/?contenu=photoshop

Et le contenu de la page, j'ai fais un screenshot : screenshot

Merci

On va y arriver ne t'en fais pas ;)

J'ai trouvé ceci, essaye cette règle :

RewriteRule ^portfolio/([a-zA-Z0-9\-]+)$ /portfolio/index.php?contenu=$1 [L]

Et indique bien tes liens comme ceci dans ton html : portfolio/photoshop ou /portfolio/photoshop

disney
Auteur

Bonjour,

Je crois qu'on y est presque...

Là quand je click sur photoshop, mon url devient : http://localhost/portfolio/portfolio/photoshop

Par contre je ne sais pas pourquoi il y a 2 fois portfolio.

Ma page s'affiche mais sans le CSS et JS qu'il devrait y avoir... Mes liens CSS et JS sont dans le header de l'index.php

Mille merci pour ton aide!

Est ce que tu as essayé les différents liens avec les différentes régles ?

liens de tes règles : /portfolio/index.php?contenu=$1 ou portfolio/index.php?contenu=$1
règles : ^/portfolio/([a-zA-Z0-9-]+)$ ou ^portfolio/([a-zA-Z0-9-]+)$
liens dans ton html : /portfolio/photoshop ou portfolio/photoshop

disney
Auteur

Oui, j'ai testé les différents liens avec les différentes règles...

RewriteRule ^portfolio/([a-zA-Z0-9-]+)$ /portfolio/index.php?contenu=$1 [L] et pour le html :portfolio/photoshop

La page s'affiche sans CSS ni JS. Toutes les autres règles/liens m'affichent une page 404.

Hello, fallait créer un .htaccess directement dans le répertoire "portfolio" pas à la racine, ça serait plus facile mais bon mtn que c'est fait... ^^

Si la page affiche du contenu mais sans style CSS et sans JS c'est que ça redirige bien.
Il ne te reste plus qu'à adapter tes liens sources pour les JS et CSS ^^

Si ça ne fonctionne pas, créer directement un .htaccess dans le répertoire "portfolio" et fait une petite règle: RewriteRule ^([a-zA-Z0-9-]+)$ index.php?contenu=$1 [L]

Voilà, à bientôt ^^

disney
Auteur

Bonjour,

Désolé du retard. Je ne sais pas comment adapter mes liens sources pour les JS et CSS...

Par contre PhiSyX, je ne comprend pas quand tu dis : "créer directement un .htaccess dans le répertoire "portfolio" ", mon .htaccess est déjà dans mon répertoire portfolio, j'ai fais n'importe quoi?

En faite, je tourne sous wamp et dans le dossier www, j'ai créé un dossier "portfolio" qui est mon site en faite, et dedans il y a index.php, .htaccess , mon dossier "pages" où il y a mes pages appelé par le menu, dossiers JS et CSS.

J'ai fais n'importe quoi et c'est pour cela que malgré l'aide précieuse de DevAddict , ça ne fonctionne pas?

Encore merci.

Bonne journée

disney
Auteur

Bonjour,

PhiSyX mille merci pour ta vidéo, elle m'a beaucoup aidé!

Bonne nouvelle, ça fonctionne!

Une vidéo ça aide beaucoup :o)

Mille merci également à DevAddict qui m'a beaucoup aidé!

Bon week-end!

disney
Auteur

Bonjour,

Je ne sais pas si je peux poster à la suite mais c'est pour une petite précision par rapport ça.

Mon menu est comme ceci:

<li><a href="/portfolio/accueil">Accueil</a></li>
<li><a href="/portfolio/portfolio">Portfolio</a></li>
<li><a href="/portfolio/creation-photoshop">Photoshop</a></li>
<li><a href="/portfolio/creation-flash">Flash</a></li>
<li><a href="/portfolio/contact">Contact</a></li>

Et ça marche très bien, le soucis c'est que quand je vais mettre mon site en ligne, les liens ne seront plus bon...

exemple : www.toto.fr et que je veux afficher la page contact : www.toto.fr/contact

Comment modifier mes liens?

Mille merci pour votre aide

Bonne journée