2009-07-13 2 views
0

Je suis en train d'écrire une règle qui ditbase question mod_rewrite

xyz.com/hotels_in_someplace dirigera à xyz.com/test.php?place=someplace

en utilisant ce qui suit dans mon htaccess

RewriteEngine On 
RewriteBase/

RewriteRule ^hotels_in_([a-z]+)$ test.php?place=$1 [L] 

mais ça ne fonctionne pas et je ne comprends pas pourquoi, je suis un serveur wamp en tant que dev. Quand j'ai essayé de lancer xyz.com/test.php?place=someplace (sans le htaccess dans le répertoire) cela fonctionne mais je suspecte qu'il y a quelque chose qui ne va pas dans ma règle.

supplémentaires: oups .... mon erreur stupide cul, était pas mod_rewrite ... ont permis

+0

Comment cela ne fonctionne-t-il pas exactement? –

+0

Avez-vous vraiment "RewriteEngine On RewriteBase /" tous sur une seule ligne? –

+0

J'ai testé cela sur mon serveur et cela fonctionne correctement. –

Répondre

0

Mise à jour: Je ne l'ai pas remarqué la RewriteBase dans la question avant, donc mon point de la barre oblique est nulle. Cependant, la RewriteRule fonctionne sur ma machine.


Essayez:

RewriteRule ^hotels_in_([a-z]+)$ /test.php?place=$1 [L] 

Le chemin test.php a besoin de la barre oblique de premier plan. La façon dont vous faites la réécriture vous sera redirigé vers xyz.com/path/to/web/docs/on/machine/test.php et ce n'est pas ce que vous voulez. :)

Aussi si vous incluez une barre oblique dans votre test.

La règle ci-dessus ne correspondra pas xyz.com/hotels_in_someplace/.

Pour correspondre à la barre oblique cela devrait fonctionner:

RewriteRule ^hotels_in_([a-z]+)/?$ /test.php?place=$1 [L] 
1

Essayez sans l'ancre fin de ligne ($)

RewriteRule ^/hotels_in_([a-z]+) /test.php?place=$1 [L] 

Aussi, avez-vous permis les fichiers .htaccess à parsés ?

0

Votre exemple fonctionne bien pour moi. Peut vouloir faire quelques petits ajustements (voir mon exemple, qui capture les majuscules, les tirets et les traits de soulignement (pour les hôtels dans les pays avec plus d'un mot (états-unis, états-unis)) et une barre oblique).

RewriteRule ^hotels_in_([A-Za-z_-]*)(/?)$ /test.php?place=$1 

Espérons que ça aide.