2010-06-01 4 views
0

je l'RewriteRule suivante dans mon .htaccess pour rediriger d'une url amicale à mon fichier d'application principal:en utilisant .htaccess pour rediriger de url convivial fichier réel

RewriteRule ^\/(.*).html$ home/www/page.php?p=$1 [L] 

Cela devrait envoyer une URL qui pointe vers une page html à page.php avec l'url comme paramètre qui sera analysé par l'application. Cela fonctionne pour urls qui ressemblent à http://www.example.com/hello.html

Le problème est que je reçois une erreur 404 lorsque l'URL contient un chemin de répertoire, par exemple: http://www.example.com/category/hello.html

L'erreur se lit comme suit: « Le fichier n'existe pas:/home/www/category "

On dirait qu'il est d'abord à la recherche du chemin 'category' au lieu de traiter le .htaccess Toutes les idées pour résoudre ce problème?

Répondre

1

Avez-vous essayé de supprimer le \/ initial de votre règle de réécriture?

Je viens d'essayer le fichier .htaccess suivant:

RewriteEngine On 
RewriteRule ^(.*)\.html$ page.php?p=$1 [L] 

Avec ce que mon page.php:

<?php print_r($_GET); ?> 

Et quand je vais à /category/hello.html j'obtiens ce qui suit:

Array ([p] => category/hello) 

Exactement comme prévu.

Notez également que vous devez échapper à . avant html, puisque vous ne voulez probablement pas /category/hellozhtml pour fonctionner.

Questions connexes