2010-12-07 26 views
0

En wordpress, je veux http://www.example.com/domain/12345/ redirigent verscomment réécrire l'URL dans .htaceess dans wordpress pour cela?

http://www.example.com/page.php?a=domain&b=12345

Le réglage par défaut de .htaccess est le suivant,

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 
# END WordPress 

ajouter une autre déclaration que je à la fin de IfModule mais fonctionne pas

RewriteRule ^http://%{HTTP_HOST}%/(.*)/(.*)/$ page.php?a=$1&b=$2 [L,NC] 

Quelque chose ne va pas? (le .htaccess se trouve dans le répertoire racine de wordpress)

Répondre

2

Le [L] implique que c'est la dernière règle qui devrait être traitée si les conditions correspondent.

La première règle met en correspondance les demandes d'index.php et de redirections.

La deuxième règle établit une correspondance avec les demandes pour tout autre élément qui n'est pas un nom de fichier ou un répertoire existant (en utilisant les deux conditions), puis redirige vers index.php et arrête le traitement. Mettre votre RewriteRule AVANT que les deux lignes RewriteCond permettent de vérifier un chemin correspondant à la regex et de rediriger vers page.php. Vous devrez modifier votre regex pour continuer à utiliser les réécritures permalink de WordPress, la règle/(. )/(.)/est trop générique et correspond à presque tout.

1

Juste pour être sûr. Dans Wordpress, vous pouvez cliquer sur "Permaliens" sous "Paramètres" dans l'admin et contrôler complètement vos URL à partir de là. Cela va créer des règles dynamiques pour gérer la réécriture.

Si cela est quelque chose que vous devez faire pour une autre raison, ajustez votre code comme ceci:

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 

RewriteRule ^http://%{HTTP_HOST}%/(.*)/(.*)/$ page.php?a=$1&b=$2 [L,NC] 

RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 
# END WordPress 

Si vous mettez le rewriterule là-bas, et votre fichier htaccess est éditable par un script, cette ligne sera écrasé si vous mettez à jour les permaliens dans wp plus tard cependant.