Je travaille actuellement sur un blog PHP. Où j'ai utilisé un fichier .htaccess
pour obtenir une URL propre, voici le code:
RewriteEngine On
RewriteCond %{HTTPS} !=off
RewriteCond %{HTTP_Host} ^example\.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteRule ^([0-9]+)/([a-zA-Z0-9_-]+)?$ post.php?post_id=$1&title=$2 [L]
RewriteRule ^(.+)/(admin|css|fonts|ico|include|js|images)/(.*)$ $2/$3 [L]
J'ai ce code en ligne. Comme je suis nouveau sur PHP et sur ce .htaccess
, c’est pourquoi je n’en ai pas la moindre idée.
Avant d'ajouter le fichier .htaccess
, l'URL était:
http://www.example.com/post.php?post_id=12&title=post-title
Et, URL après avoir ajouté le fichier .htaccess
:
http://www.example.com/12/post-title
Alors RewriteRule
m'a donné l'URL que je veux. Mais cela a causé une erreur dans la redirection de la page. Avant d’utiliser le fichier .htaccess
chaque fois que j’ai cliqué sur le bouton principal après la visite de l’URL suivante:
http://www.example.com/post.php?post_id=12&title=post-title
puis l'URL a été redirigé avec succès vers la page d'accueil, à savoir:
http://www.example.com/index.php
Mais maintenant, après avoir utilisé le fichier .htaccess
après avoir visité la même URL, il est redirigé comme suit:
http://www.example.com/12/index.php
Et maintenant, il tire erreur 404 page non trouvée. Car techniquement, il n’existe pas de page de ce type dans le répertoire 12 sur le serveur. Donc, fondamentalement, il ajoute 12 devant chaque fichier.
Donc, après avoir visité le lien suivant: http://www.example.com/12/post-title
, je souhaite le rediriger correctement car il redirigeait les pages avant d'ajouter le fichier .htaccess
.
On dirait que vous êtes (incorrectement) lié à une URL relative (par exemple. index.php
) au lieu d’une URL relative racine (commençant par une barre oblique, par exemple. /index.php
) ou même une URL absolue (Scheme + Host + URL-path).
Par exemple, si vous créez un lien vers index.php
et que vous vous trouvez à l'URL /12/post-title
, le problème sera naturellement résolu en /12/index.php
(incorrect). Alors que si vous deviez créer un lien vers /index.php
, cela résoudra alors en /index.php
(correct).
Cependant, voulez-vous vraiment index.php
dans vos URL? Vous voudriez normalement établir un lien vers le répertoire (avec une barre oblique) et laisser le serveur répondre avec l'index de répertoire approprié. Par exemple:
<a href="/">Home</a>