2012-11-08 5 views
0

Je veux réécrire une URL simple, mais sans générer des erreurs de Googlerègles Réécrire erreur

Ce code fonctionne:

RewriteEngine on 
RewriteRule lieu/([0-9]+).* index.php?com=location&lID=$1 [L] 
RewriteRule evenement/([0-9]+).* index.php?eID=$1 [L] 

mais je veux ajouter R = 301 drapeau pour le référencement

Lorsque i ajouter [R = 301, L]:

The requested URL /var/www/mysite/index.php was not found on this server. 

Je sais que R = 301 indicateur doit être utilisé avec http: //

mais lorsque je tente l'URL ne Réécrire

+0

Sûrement cette URL cible n'est pas une URL valide. C'est un chemin de serveur (chemin de répertoire). – Madbreaks

+0

@Madbreaks ok mais que conseillez-vous? – bklups

+0

S'il vous plaît nous montrer votre bloc complet de réécriture, y compris le 301 – Madbreaks

Répondre

0

Apache essaie de deviner si un chemin est un chemin URI ou un fichier-chemin, et il devine mal. Lorsque vous réécrivez en interne, un chemin de fichier est parfaitement adapté, car tout est interne au serveur. Mais quand vous redirigez, apache devine incorrectement que votre cible (le index.php?eID=) est un chemin de fichier et il est signalé comme étant une redirection par mod_alias. Au moment où la redirection se produit, elle est malformée en tant que chemin de fichier au lieu du chemin URI. C'est pourquoi vous obtenez le bit /var/www/mysite/ lorsque vous redirigez.

Soit ajouter un RewriteBase pour fournir une base URI par rapport URIs, ou rendre votre cible une URI absolue:

RewriteEngine On 
RewriteBase/
RewriteRule lieu/([0-9]+).* index.php?com=location&lID=$1 [R=301,L] 
RewriteRule evenement/([0-9]+).* index.php?eID=$1 [L,R=301] 

ou

RewriteEngine on 
RewriteRule lieu/([0-9]+).* /index.php?com=location&lID=$1 [L,R=301] 
RewriteRule evenement/([0-9]+).* /index.php?eID=$1 [L,R=301] 
+0

Je n'ai pas cette erreur (/ var/www/mysite /), mais dès que j'ajoute R = 301, l'url ne change pas. Il fonctionne uniquement avec le drapeau L unique – bklups

+0

le lien est bon, mais n'apparaît pas dans la barre d'adresse du navigateur – bklups

+0

@bklups J'ai oublié d'ajouter les drapeaux 'R = 301' aux premières règles –

Questions connexes