Je suis confronté à un comportement assez étrange de mon .htaccess. Chaque fois que j’essaie d’accéder à un lien réécrit par mod_rewrite, mon fichier .htaccess fait référence à la racine et non au sous-répertoire dans lequel je travaille. La structure de mon dossier est la suivante:
htdocs/ blog6/ .htaccess
Mon .htaccess ressemble à ça:
Options +FollowSymLinks -MultiViews ErrorDocument 401 /core/error/401.php ErrorDocument 403 /core/error/403.php ErrorDocument 404 /core/error/404.php ErrorDocument 500 /core/error/500.html RewriteEngine on RewriteBase /blog6/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]*)$ /index.php?page=$1 [L]
Mais chaque fois que j’essaie d’accéder à un fichier via une URL réécrite, j’obtiens une erreur 404 et le journal indique:
C:/xampp/htdocs/index.php' not found or unable to stat
Il semble donc que mon fichier .htaccess souhaite accéder au fichier dans htdocs au lieu d’utiliser le sous-répertoire. Quand j’écris /blog6
dans ma rewriteRule, tout fonctionne bien, mais pourquoi RewriteBase ne fonctionne pas correctement? Si c’est important, j’utilise dans mon fichier HTML
RewriteBase
ne fonctionne que si vous fournissez une URL relative dans la cible de RewriteRule
donc changez votre code en:
Options +FollowSymLinks -MultiViews ErrorDocument 401 /core/error/401.php ErrorDocument 403 /core/error/403.php ErrorDocument 404 /core/error/404.php ErrorDocument 500 /core/error/500.html RewriteEngine on RewriteBase /blog6/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]+)/?$ index.php?page=$1 [L,QSA]