2009-11-01 6 views
0

J'ai deux URL que je voudrais récrire:pages Mod_rewrite-plusieurs

  1. /artist.php?name=x =>/x

  2. /albums.php?title=y =>/y

Voici ce que je mets dans le fichier .htaccess:

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9_-]+)$ artist.php?name=$1 
RewriteRule ^([a-zA-Z0-9_-]+)/$ artist.php?name=$1 
RewriteRule ^([a-zA-Z0-9_-]+)$ albums.php?name=$1 
RewriteRule ^([a-zA-Z0-9_-]+)/$ albums.php?name=$1 

Comment modifier le fichier afin que l'URL de albums.php soit également exécutée? (Seul le premier fonctionne.) Merci pour votre aide.

Répondre

3

Vous avez des motifs en double pour l'artiste et l'album, donc ils ne peuvent pas tous les deux travailler! Non seulement avec mod_rewrite. (Votre application Web peut être en mesure de vérifier l'existence d'un artiste ou d'un album avec le paramètre de nom fourni et décider lequel est prévu, mais cela dépasse la portée d'un simple exemple mod_rewrite.)

quelque chose d'autre dans l'URL de distinguer entre l'artiste et de l'album, par exemple:

RewriteRule ^/artist/([a-zA-Z0-9_-]+)/?$ artist.php?name=$1 
RewriteRule ^/album/([a-zA-Z0-9_-]+)/?$ albums.php?name=$1 

Notez également que j'écourté vos 4 règles de réécriture à 2, en utilisant /? (? est un quantificateur qui signifie « zéro ou un ») pour permettre l'URL avec ou sans slash final. Mais à mon avis il serait tout à fait préférable de choisir l'un ou l'autre, pour éviter d'avoir 2 URL pour la même page.

0
RewriteRule ^/artist/([a-zA-Z0-9_-]+)/?$ artist.php?name=$1 [L] 
RewriteRule ^/album/([a-zA-Z0-9_-]+)/?$ albums.php?name=$1 [L]