Je voudrais utiliser localhost/projects/project1/page/x
au lieu de localhost/projects/project1/index.php?page=x
. Mais après avoir redirigé l'URL dans .htaccess à l'aide de RewriteRule, ma page d'erreur 404 est renvoyée.
Voici mon code:
ErrorDocument 404 /projects/project1/pagenotfound.php
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^projects/project1/page/([0-9]*)$ /projects/project1/index.php?page=$1 [L,QSA,NC]
ErrorDocument 404 /projects/project1/pagenotfound.php
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^page/([0-9]*)$ /projects/project1/index.php?page=$1 [L,QSA,NC]
Mon .htaccess est dans le même répertoire que le fichier index.php, donc:
localhost/projects/project1/.htaccess
C'est le problème, ou plutôt votre modèle RewriteRule
est le problème, en fonction de la façon dont vous le regardez.
Dans les fichiers .htaccess (par répertoire), le préfixe par répertoire est d'abord supprimé de l'URL avant la correspondance avec le modèle. Donc, si votre fichier .htaccess est à /projects/project1/.htaccess
, votre motif RewriteRule
doit exclure /projects/project1/
du début (pour la même raison, vous supprimez le préfixe /
du motif dans la racine du document). En d'autres termes...
RewriteRule ^page/([0-9]*)$ /projects/project1/index.php?page=$1 [L,QSA,NC]
Ou déplacez votre fichier .htaccess vers la racine du document.