2010-12-06 10 views
2

Actuellement, j'ai paramètres URL comme celui-ci http://www.website.com/index.php?user&page=editBesoin d'aide avec .htaccess, ne semble pas fonctionner

Et index.php i ont mis si $_GET['user'] est la page de l'utilisateur d'affichage mis et à l'intérieur de la page de l'utilisateur je l'ai fait quelque chose comme si $_GET['page'] est mis alors trouver la page (dans ce cas modifier) ​​et charger cette page.

Il fonctionne bien.,

Mais quels changements dois-je faire dans le fichier htaccess tels que les URL deviennent comme ce http://www.website.com/user/ - to load user file et http://www.website.com/user/edit - to load user edit file

Voici mon contenu htaccess

Options +FollowSymLinks 

RewriteEngine On 

RewriteRule ^(.*)/$ index.php?$1 

RewriteRule ^(.*)/(.*)/$ index.php?$1&page=$2 

Mais cela ne semble pas fonctionner comme je l'espérais.

si je charge http://www.website.com/user/edit - it works mais si je viens de charger /user/ - it doesn't

Répondre

1

Essayez de changer les règles et en ajoutant le L -flag:

RewriteRule ^(.*)/(.*)/$ index.php?$1&page=$2 [L] 
RewriteRule ^(.*)/$ index.php?$1 [L] 

.* matchs chaque séquence de caractères. Cela signifie que user/edit/ est associé ainsi que user/. Vous devez d'abord placer la règle plus spécifique pour vous assurer qu'il y a un / entre les deux. Je vous conseille de changer que les règles à quelque chose comme cela, étant donné que les autres règles peuvent correspondre à des choses que vous ne l'avez pas l'intention:

RewriteRule ^([^/]+)/([^/]+)/$ index.php?$1&page=$2 [L] 
RewriteRule ^([^/]+)/$ index.php?$1 [L] 

[^/]+ correspondra chaque séquence qui ne contient pas de /.

+0

Très bien, ça marche, je peux ajouter un certain nombre de règles comme celles-ci? Ou bien y a-t-il une meilleure solution. –

+0

@Roccos: Vous devriez pouvoir ajouter autant de règles que vous le voulez, tant qu'elles ne sont pas ambiguës. – jwueller

+0

Merci Mate. Cela m'a beaucoup aidé. –

1

Je pense que la question a déjà reçu une réponse - mais votre règle pourrait être améliorée.

RewriteRule ^([a-zA-Z]*)/$ index.php?$1 
// ... 

Il ne correspond pas / (barres obliques) et vous ne courez pas dans ce trouble ;-)

0

options + FollowSymLinks

RewriteEngine On

RewriteRule^(. *) ([^ \ /.] +) /? index.php $? 1

$ RewriteRule^(. )/(.)/$ index.php? 1$page = $ 2

0

Depuis .* correspond à quoi que ce soit votre première règle sera toujours appliquée.

Vous devez utiliser un modèle plus spécifique comme [^/]+ (quoi que ce soit, mais /) au lieu de .*:

RewriteRule ^([^/]+)/$ index.php?$1 
RewriteRule ^([^/]+)/([^/]+)/$ index.php?$1&page=$2 

Maintenant, la première règle ne sera appliquée que sur les chemins avec un seul segment et le second sur les chemins avec twi segments.

Questions connexes