2013-05-29 8 views
0

Je souhaite réécrire et 301 rediriger une URL avec le paramètre de requête comme ci-dessous: -RewriteRule requis pour les URL avec les paramètres de requête

domain.com/link.asp?StockNo=601-0287 

à quelque chose comme le ci-dessous: -

domain.com/Product-Name 

Le Le numéro de stock sera différent pour plusieurs URL, tout comme le nom du produit pour chacun.

Il n'y a pas beaucoup d'URL pour le faire écrire manuellement ne serait pas un problème ...

Quelque chose comme le ci-dessous ne fonctionne pas: -

RewriteRule ^link.asp/?StockNo=601-0287$ /Product-Name/$1 [R=301,L] 

Mais ce serait le genre de règles désirées.

Quelle serait la meilleure façon de gérer ces réécritures?

Une réécritureConduite serait-elle nécessaire? Je suppose que {QUERY_STRING} ne serait pas nécessaire car le nom de produit ne correspond pas à la chaîne de requête?

Merci d'avance.

Répondre

1

Pour correspondre REQUEST_URI et QUERY_STRING ensemble, vous devez utiliser %{THE_REQUEST}

mod_rewrite et .htaccess Activer par httpd.conf puis mettre ce code dans votre .htaccess sous DOCUMENT_ROOT répertoire:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+link\.asp\?StockNo=[^\s]+ [NC] 
RewriteRule^/Product-Name/? [R=302,L] 

EDIT: Pour gérer les numéros des stocks spécifiques:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+link\.asp\?StockNo=601-0287 [NC] 
RewriteRule^/Product-A/? [R=302,L] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+link\.asp\?StockNo=601-0293 [NC] 
RewriteRule^/Product-B/? [R=302,L] 

Si vous avez trop de ces stocks à réécrire alors je vous recommande fortement d'utiliser RewriteMap pour vous. Voir cette réponse pour plus de détails: Edit .htaccess with PHP

+0

Merci pour votre réponse. Presque si près de là - Il ajoute l'URL avec la chaîne de requête (c'est-à-dire: 'domain.com/Product-Name/? StockNo = 601-0287'). Tout de la '?' N'est pas nécessaire. Y a-t-il une modification à votre réponse qui supprimerait la chaîne de requête de l'URL? Merci pour cette réponse rapide. – zigojacko

+0

Pouvez-vous essayer dans un navigateur différent puisque ce '?' Dans le '/ Product-Name /% 1?' Déshabillerait la requête de l'URL redirigée. – anubhava

+0

Même chose dans différents navigateurs (le cache a été effacé juste pour être sûr). – zigojacko

Questions connexes