2010-08-30 13 views
-1

J'ai la logique de réécriture suivante dans mon vHost et tout semble fonctionner en ce qui concerne la redirection des sous-domaines, mais dès que j'ajoute un chemin à l'URI, j'obtiens une erreur dans mon apache_error.log.Réécriture de la logique?

Voici la logique de réécriture:

RewriteEngine On 

    # Remove the www alias 
    RewriteCond %{HTTP_HOST} ^www\.13labs\.net$ [NC] 
    RewriteRule ^(.+)$ http://13labs.net$1 [R=301,L] 

    RewriteCond %{REQUEST_URI} ^.+$ 
    RewriteCond %{REQUEST_FILENAME} !\.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf)$ [OR] 
    RewriteCond %{REQUEST_FILENAME} !-f [OR] 
    RewriteCond %{REQUEST_FILENAME} !-d [OR] 
    RewriteCond %{REQUEST_FILENAME} !-l 
    RewriteRule^- [L] 

    RewriteCond %{HTTP_HOST} !^www\.13labs\.net$ [NC] 
    RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.13labs\.net$ [NC] 
    RewriteRule ^(.+)$ /index.php?subdomain=%2&kohana_uri=$1 [PT,L,QSA] 

    RewriteRule ^(.+)$ /index.php?kohana_uri=$1 [PT,L,QSA] 

Je suis en train de frapper admin.13labs.net/login, qui devrait être en train de réécrire à 13labs.net/index.php?subdomain=admin & kohana_uri =/s'identifier. Cependant, dans mon apache_error.log je reçois ce qui suit:

[Mon Aug 30 23:56:06 2010] [error] [client 74.63.151.37] File does not exist: /var/www/13labs.net/html/login 

Des indices? J'ai joué avec ce pendant environ une heure maintenant et je suis déconcerté ...

Cordialement, Andrew

Répondre

2

Votre deuxième règle de réécriture (avec ses conditions correspondantes) ressemble à ça va arrêter réécritures pour n'importe quelle URL. Il correspond si le fichier n'a pas la bonne extension, OR n'est pas un fichier, OU n'est pas un répertoire, OU n'est pas un lien. Aucune ressource ne peut être un fichier et un répertoire et un lien en même temps, donc toutes les URL vont correspondre - et elles seront toutes transmises telles quelles, puisque votre drapeau [L] empêche toute réécriture ultérieure. Si votre intention est d'empêcher les réécritures pour les URL qui correspondent à des fichiers, des liens ou des répertoires existants, supprimez les! 'De vos conditions et supprimez [OR] de la condition qui vérifie l'extension de fichier.

+0

On dirait que le [OR] doit rester, mais le! besoin d'aller. Cela a fonctionné: RewriteCond% {REQUEST_URI} ^. + $ RewriteCond% {REQUEST_FILENAME} \. (Gif | jpe? G | png | js | css | swf | php | ico | txt | pdf) $ [OR] RewriteCond% {REQUEST_FILENAME} -f [OR] RewriteCond% {REQUEST_FILENAME} -d [OR] RewriteCond% {REQUEST_FILENAME} -l RewriteRule^- [L] –