2013-05-28 13 views
0

Ceci est mon .htaccess. Il redirige /contact à index.php?page=contact
Cela fonctionne parfaitement. Mais avec ce .htaccess, si quelqu'un met /contact.php, ils vont avoir une erreur..htaccess url réécriture

Options +FollowSymlinks -MultiViews 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} !index\.php [NC] 
RewriteRule ^([^/]+)/?$ index.php?page=$1 [QSA] 

Au fond, est-il possible de réécrire seulement s'il n'y a pas .php dans l'URL?
S'il existe un .php dans l'URL, par ex. contact.php il suffit de charger la page normale .php.

Comment est-ce que je pourrais faire ceci?

+0

double possible de [? Mod \ _rewrite pour enlever .php mais toujours servir le fichier .php] (http://stackoverflow.com/questions/1698464/mod-rewrite- to-remove-php-but-still-serve-the-php-file) – typeoneerror

Répondre

2

Ajouter quelque chose comme ça avant la RewriteRule:

RewriteCond %{REQUEST_FILENAME} !-f 

-f signifie "est un fichier". Avec cette règle vous dites "le nom de fichier demandé n'est pas un fichier existant" (dans le DocumentRoot, ofc).

Plus d'infos et d'options: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritecond

+0

Merci pour ça! Pourriez-vous m'aider pour la 2ème partie? –

+0

Essayez ceci: 'RewriteCond% {REQUEST_FILENAME}! \. Php $ [NC]' (source: http://stackoverflow.com/questions/1698464/mod-rewrite-to-remove-php-but-still-serve- le fichier-php) –

Questions connexes