2011-11-24 4 views
14

J'ai un problème avec mes redirections .htaccess. Quand je tape:Problème de règles de réécriture d'apache pour des pages spécifiques

http://www.domain.com/contact 

il va à la index.php et non la contact.php

voici mon .htaccess:

Redirect 301 /clients http://clients.domain.com 

RewriteEngine On 
SetEnvIf Host ^www\. page=www 
SetEnvIf Host ^mob\. page=mobile 

RewriteBase/
SetEnvIfNoCase User-Agent "^Wget" bad_bo 
#etc ... 
Deny from env=bad_bot 

RewriteCond %{HTTP_HOST} !^www.domain.com 
RewriteRule (.*) http://www.domain.com/$1 [R=301] 

RewriteRule ^about/?$ about.php 
RewriteRule ^contact/?$ contact.php 

rewriterule ^(.*)$ index.php?subdomain=%{ENV:page}&page=$1 

dans mon php je reçois:

<?php 

print_r($_GET); 
Array (
    [subdomain] => www 
    [page] => contact.php 
) 

Qu'est-ce qui me manque?

+0

votre manque votre dernier «/» après le contact –

+0

@TobyAllen '/' la question marque la règle soit l'utilisation/ou ne pas – eric

Répondre

17

Essayez cette règle:

RewriteCond %{HTTP_HOST} !^www.domain.com [NC] 
RewriteRule (.*) http://www.domain.com/$1 [R=301,L] 

RewriteRule ^about/?$ about.php [NC,QSA,L] 
RewriteRule ^contact/?$ contact.php [NC,QSA,L] 

rewriterule ^([a-z0-9]+)$ index.php?subdomain=%{ENV:page}&page=$1 [NC,QSA,L] 

J'ai aussi ajouté les drapeaux NC, QSA, L pour vous assurer que la dernière règle [L] est exécutée si correspondance, [NC] pour les non et le cas [QSA] pour la chaîne de requête Append.

0

Vous avez besoin de réécrire vos règles au sujet et coordonnées de la manière suivante:

RewriteRule ^about/?$ about.php [L,QSA] 
RewriteRule ^contact/?$ contact.php [L,QSA] 
Questions connexes