web-dev-qa-db-fra.com

RewriteRule ne fonctionne pas correctement sur mon serveur Ubuntu 14.04 exécuté sous Windows Azure

Dans mon serveur j'ai gardé signup.php et dans . Htaccess j'ai gardé cette chose -

RewriteRule ^/registration /? $ http://www.example.com/signup 1 $ [R]

Mais ceci ne redirige pas www.example.com/registration/ vers www.example.com/signup/ Cependant, j'ai essayé avec d'autres choses comme -

RewriteRule ^/registration /? $ Signup.php $ 1 [R]

et aussi -

RewriteCond% {REQUEST_URI} ^ registration/$ [NC] RewriteRule ^ (. *) http://example.com/signup [R = 301, L

Mais rien ne marche. Cela me montre un message d'erreur 404. J'utilise Ubuntu 14.04 sur un serveur Windows Azure exécutant Apache 2.2.22

1
user3509725

Je vois des problèmes avec vos règles de réécriture.

  • Vous n'activez pas explicitement mod_rewrite avec RewriteEngine On
  • Lorsque vous utilisez des règles de réécriture dans votre fichier .htaccess, la barre oblique au début de celles-ci est utilisée. Avoir une barre oblique au début de la règle empêchera la réécriture d'exécuter la règle. (Ceci est différent de si la règle était dans httpd.conf où la barre oblique au début est requise.)
  • Vous avez un $1 étranger dans votre première règle. Avoir $1 devrait être une référence arrière à ce qui est entre parenthèses dans la première partie de la règle. Il n'y a pas de parenthèses, donc cette règle ne fonctionnera pas correctement.
  • Lors de la redirection avec mod_rewrite, je vous recommande de toujours utiliser l'indicateur L pour vous assurer qu'il s'agit de la dernière règle de réécriture déclenchée.
  • Vous voulez presque toujours spécifier le type de redirection "permanent" avec R=301 afin qu'il ne fasse pas de redirection temporaire moins propice au référencement.
  • Votre dernière règle devrait être sur plusieurs lignes.
  • Il manque à votre dernière règle un ] de clôture.

Je recommanderais d'abord d'essayer d'utiliser une directive de redirection simple pour quelque chose d'aussi simple:

redirect permanent /registration /signup

Si cela ne fonctionne pas, vous pouvez corriger votre règle de réécriture:

RewriteEngine On
RewriteRule ^registration/?$ /signup [L,R=301]
1