htaccess - redirection vers une autre page
J'ai un problème avec mon fichier htaccess. Sa page de redirection vers la racine est index.php
Par exemple: Si j'utilise une URL comme http://domain.com/jobs ou domain.com/jobs, sa page de redirection vers www.domain.com/index.php
Mais si j'utilise www.domain.com/jobs il ne redirige pas la page vers une autre page.
Voici le code htaccess utilisé par moi
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
</IfModule>
L' [L]
indicateur est un raccourci pour Last, qui indique mod_rewrite
d'arrêter le traitement des règles une fois que celle-ci est mise en correspondance.
RewriteRule ^ index.php [L]
rule est traitée et redirige votre demande vers les index.php
règles d'engagement après celle-ci.
La solution est - changez l'ordre de vos règles. Ça devrait ressembler à ça:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Il sera redirigé vers le site www.domaine.com, puis les autres vérifications des règles seront effectuées.