2010-05-06 6 views
0

Je veux rediriger ceci:aide htaccess

foo.com/xxx 

... à ceci:

foo.com/somepage.php?id=xxx 

Voici comment je le fais:

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^([^/]+)$ http://foo.com/somepage.php?id=$1 [L] 

le problème maintenant, c'est que foo.com ne marche plus. Je ne peux pas voir foo.com ni foo.com/index.php

aidez-moi! :)

+1

À quoi correspond le '=' à la fin de la demande entrante? – grossvogel

+0

@grossvogel: Pour nous embrouiller encore plus ;-) – Josh

+0

@Matias: Vous pouvez éditer votre question pour faire des mises à jour. Je l'ai fait pour vous cette fois-ci cependant :) – Dolph

Répondre

1
RewriteRule ^/([^/]+)$ /somepage.php?id=$1 [L] 

Soyez prudent tho, foo.com/1 est un mouvement BAD sur le référencement.

+0

La RewriteRule ne devrait pas contenir le nom de domaine. Mais la question était si vague pour tout ce que je sais que foo.com fait partie de l'URI, comme 'http: // bar.com/foo.com/xxx' ... – Josh

+0

Il spécifie [http: //] foo.com /somepage.php?id=$1, mais pour la portabilité, vous avez raison. Édité. – Ben

+0

Mais dans un fichier .htaccess je ne crois pas que le RewriteRule * peut * correspondre au nom de domaine ... Peut-être que je me trompe. Quoi qu'il en soit, ce que vous avez semble correct, donc +1 :-) – Josh

0

Essayez:

Options +FollowSymLinks 
RewriteEngine On 
RewriteRule ^(xxx=)$ /somepage.php?id=$1 [L] 

Bien sûr, vous n'avez pas spécifié clairement ce que xxx = est ...

1

1) Vous n'avez pas besoin de la ligne RewriteCond. Il est destiné à déterminer quand votre règle s'applique, et non quelle partie de la demande.

[EDIT] SAUF, votre RewriteCond est là pour que cette règle s'applique lorsque la chaîne de requête est vide. Si c'est ça, alors il n'y a rien de mal à ça.

2) Je pense que vous devez inclure la première/dans la règle, comme ceci:

RewriteRule ^/([^/]+)$ /somepage.php?id=$1 [L] 

[EDIT] Les deux votre version et la mienne correspondra à votre fichier index.php, ce qui pourrait expliquer pourquoi votre le site est cassé en ce moment. Si vous ne voulez pas correspondre les fichiers php, vous pouvez ajouter une autre condition comme

RewriteCond ${REQUEST_URI} !^.*\.php$ 

3) Pour une règle de ce genre, il pourrait être utile d'ajouter /? à la fin (en dehors des parens, avant le $), au cas où ils recherchent foot.com/xxx/, ce qui est logique si vous voulez qu'il ressemble à un répertoire.

+0

+1 pour votre premier point. Quant à savoir si votre RewriteRule est correcte, qui sait, la question était trop vague. – Josh