2009-05-13 11 views
0

Ceci est mon .htaccess actuelMod Rewrite - Question simple

Options +FollowSymLinks 
DirectoryIndex index.php 

RewriteEngine On 
RewriteBase /product/ 

RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteRule ^(.+)\.php$ ./$1/ [R=301,L] 

RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule [^/]$ %{REQUEST_URI}/ [R=301,L] 

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

Tout fonctionne bien maintenant ..

  • /produit/retour de contact/produit/contact/
  • /produit /contact.php retour à/product/contact/

Question

  • Comment faire tout mon .php sera/contact// help// faq/
  • Maintenant, je devrais ajouter help.php contact.php faq.php au htaccess
  • J'ai essayé pour ajouter RewriteRule^(. *)/$ $ 1.php [QSA, L] mais ce sera la boucle de retour.

Permettez-moi de savoir comment le résoudre;)

+0

Peut-être juste parce que vous essayez de résoudre le problème déjà, mais la ligne de fond de votre .htaccess réoriente déjà/produit/help/à /product/help.php, est que exprès? –

Répondre

0

Malheureusement pour ce faire dans vos déclarations de ré-écriture fera une boucle infinie, car Apache va essayer de réécrire help/ à help.php, puis help.php à help/ etc etc

S'il est vraiment nécessaire, faites-le dans votre application (Par exemple en PHP):

<?php 
// The (\?.*)? so it "ignores" query strings 
if (preg_match('/\.php(\?.*)?$/', $_SERVER['REQUEST_URI'])) { 
    header('Location: ' . str_replace('.php', '/', $_SERVER['REQUEST_URI'])); 
    exit; 
} 
+0

ouais .. de cette façon peut être fait – wow

+0

Échapper le point dans l'expression régulière. Sinon, vous obtiendrez une boucle infinie si le chemin de l'URI se termine par un 'php' comme dans' foo-php' ou 'bar/php'. – Gumbo

+0

Belle prise Gumbo, a fixé la réponse. Merci! –

0

Est-il possible que cette ligne est en arrière?

RewriteRule ^(.*)/$ $1.php [L,QSA] 

Si je comprends bien, ce récrit domain.com/product/help/ à domain.com/product/help.php. Essayez

RewriteRule ^(.*).php $1/ [L,QSA] 

Cela devrait réécrire domain.com/product/help.php à domain.com/product/help/ et domain.com/foobar/baz.php~~V~~singular~~3rd à domain.com/foobar/baz/ etc.

+0

ne fonctionne pas :) merci votre entrée – wow