2011-09-29 2 views
0

Un peu d'aide compatriotes SO personnes.htaccess règle de réécriture, ancienne URL à nouveau

Ce que j'ai en ce moment (basé sur du code que j'ai utilisé pour un type d'URL différent).

Je veux la première URL pour rediriger vers la seconde, avec aucune chaîne de requête inclus après

C'est ce que je dois à ce jour.

RewriteRule ^(page.php?id=missionstatement+)/?$ http://example.com/why/mission-statement [R=301,L] 
RewriteRule ^(page.php?id=ofsted+)/?$ http://example.com/how/ofsted-report [R=301,L] 
RewriteRule ^(page.php?id=governingbody+)/?$ http://example.com/governors [R=301,L] 
+0

C'est faux - RewriteRule ne fonctionne pas avec une chaîne de requête comme celle-là. Pourriez-vous s'il vous plaît montrer l'URL et comment il devrait être redirigé (de l'URL => à l'URL) comme ces quelques-uns des "caractères" que vous avez mis dans vos règles me confondent BEAUCOUP. – LazyOne

+0

http://example.com/page.php?id=whatever => http://example.com/how/quelquechose – Willans

Répondre

2

Voici la règle (redirigera 1 URL):

RewriteCond %{QUERY_STRING} ^id=whatever 
RewriteRule ^page\.php$ http://%{HTTP_HOST}/how/somehow? [R=301,L] 
  1. Cette règle destinée à être placée dans .htaccess dans le site Web dossier racine. Si placé ailleurs, un petit ajustement peut être nécessaire.

  2. J'ai utilisé %{HTTP_HOST} - ceci redirigera vers le même domaine que l'URL demandée. Si le nom de domaine doit être différent, remplacez-le par le nom de domaine exact.

  3. Le ? à la fin de la nouvelle URL supprimera la chaîne de requête existante.

+0

Woop. Merci pour les explications aussi. – Willans

0

Ahoy!

Donnez ce un tourbillon:

#check mod_rewrite is enabled 
<IfModule mod_rewrite.c> 

#enable mod rewrite 
RewriteEngine On 

#set working directory 
RewriteBase/

#force trailing slash 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ $1/ [R=301,L] 

#bootstrap index.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^page.php\?id=(.*)$ http://www.willans.com/page.php/$1 [R=310,L] 

#end mod rewrite check 
</IfModule> 

Il a été un moment que je l'ai fait tout dev web, mais cela devrait être un coup de pouce dans la bonne direction au moins;)

Questions connexes