2010-03-30 8 views
1

J'ai modifié mon fichier .htaccess pour avoir la déclaration suivantea besoin d'aide avec un problème mod-rewrite apache

RewriteCond $1 !^index.php$ 
RewriteRule ^/?([^/]+)$ index.php?c=home&m=details&seo=$1 [L,NS] 

Cela me permet d'utiliser l'URL produit est comme ceci: http://domain.com/product_name

Cependant, Lorsque vous essayez d'accéder à un fichier au même niveau que index.php, il appelle toujours le RewriteRule ci-dessus et des erreurs.

Je dois être en mesure d'accéder à des fichiers comme ci-dessous, mais chaque URL tente actuellement de charger index.php. http://domain.com/about.htm
http://domain.com/terms.htm
http://domain.com/robots.txt
etc

Toutes les suggestions sur la façon dont je peux modifier mon fichier htaccess pour que cela fonctionne correctement?

+0

Comment distinguerez-vous les fichiers des noms de produits? Les fichiers auront-ils une extension comme '.htm'? –

+0

Oui, les fichiers auront une extension et les produits ne le seront pas. – mike

Répondre

3

Si vous voulez que les fichiers produits d'atout que vous pourriez jeter dans une autre condition:

RewriteCond $1 !^index.php$ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^/?([^/]+)$ index.php?c=home&m=details&seo=$1 [L,NS] 

... ce qui signifie que seulement si l'URI demandé ne correspond pas à un fichier doit-il être traité comme un produit. Avoir des fichiers d'atout tels que celui-ci n'est pas terrible à moins que vous ne prévoyiez d'avoir des produits avec des noms comme "something.html" et "dynamic.php" ou "lenna.jpg".

+0

Très bien! Cela semble fonctionner! Y a-t-il des problèmes de performances avec cette méthode, car elle doit vérifier chaque fois qu'un fichier est chargé lors du chargement d'un produit? – mike

+0

Que je ne saurais pas :( –