2011-08-26 4 views
2

J'ai l'url comme:Url réécriture mod_rewrite

page.com/content.php?xname=p&yname=q&zid=1 

Je veux réécrire cette URL en utilisant apache mod_rewrite dans quelque chose comme:

page.com/p/q/ 

note il paramètre ne doit pas être 'de ZID' dans URL renommée. Je sais que les expressions sont passées comme GET dans l'URL d'origine. Est-il possible de renommer comme ci-dessus. Si oui, comment y parvenir?

Répondre

2

Celui-ci fonctionne très bien pour moi et réécrira demande de /p/q/-/content.php?xname=p&yname=q&zid=1.

Options +FollowSymLinks -MultiViews 
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+)/$ content.php?xname=$1&yname=$2&zid=1 [QSA,L] 
  1. Cette règle doit être placée dans .htaccess dans le site Web dossier racine. Si placé ailleurs, un petit ajustement peut être nécessaire. Il ne sera pas réécrire si demandé URL est un vrai fichier ou dossier (je suis sûr que vous ne voulez pas réécrire des images ou d'autres pages - je devais ajouter une telle condition puisque je ne sais pas quel est votre la structure du site est).

0
RewriteEngine On 
RewriteRule ^/[a-z0-9]+/[a-z0-9]+/$ content.php?xname=$1&yname=$2 [L] 
1
RewriteRule ^content\.php\?xname=(p)&yname=(q)&zid=1$ /$1/$2 [R] 

Au lieu de p et q vous pouvez essayer des expressions comme [a-Z0-9 _-] + pour correspondre à des identifiants.

Il y a un outil de test en ligne ici: http://civilolydnad.se/projects/rewriterule/

+0

Quand j'écris quelque chose comme ceci: RewriteRule^événement/([az] +)/([0-9] +)/$ x.php x = 2 $ Même si je suis entré url : événement/p/6 /. Il est renommé en x.php? X = p Ce que je veux, c'est x.php? X = 6 – akashr