2010-09-14 2 views
0

Comme le titre le dit, comment puis-je utiliser .htaccess et mod_rewrite pour changer cela?mod_rewrite + "pages/123/un-texte" -> "showpage.php? Index = 123 & title = un-texte"

"pages/123/some-text" à "? Showpage.php index = 123 & title = certains texte"

j'ai commencé avec ceci:

RewriteEngine On 
Options +FollowSymLinks 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} pages/(.*) 
RewriteRule (.*) /showpage.php?index=%1 [R] 

qui permet moi pour atleast obtenir le paramètre pour index, mais cela échoue à moins que je crée un répertoire vide appelé pages.

Répondre

1

Vous pouvez simplement extraire les parties pertinentes de l'URL dans le RewriteRule lui-même:

RewriteEngine On 
Options +FollowSymLinks 
RewriteBase/

RewriteRule ^pages/([^/]+)/(.+)$ /showpage.php?index=$1&title=$2 [R] 

Notez que le drapeau R provoque une redirection externe, est-ce que vous voulez? Dans le cas contraire, vous devez supprimer:

RewriteRule ^pages/([^/]+)/(.+)$ /showpage.php?index=$1&title=$2 

Ou, si vous voulez une redirection externe, pour être sûr, il est une bonne idée d'utiliser le drapeau L de sorte que la redirection est appliquée immédiatement (et ajouter le 301 statut si la redirection est permanente):

RewriteRule ^pages/([^/]+)/(.+)$ /showpage.php?index=$1&title=$2 [R=301,L] 

en outre, si vous voulez que la pièce de titre à être facultatif, vous pouvez le faire aussi:

RewriteCond &title=$3 ^(&title=.+)$ 
RewriteRule ^pages/([^/]+)(/(.+))?$ /showpage.php?index=$1%1 
+0

Oui, je veux la redirection externe au lieu de interne de sorte que liens sur la page sont relatifs à/et non/pages/du point de vue du navigateur. Merci! – Dmi