Субдомен переписать логику - PullRequest
0 голосов
/ 27 июля 2010

У меня есть следующая логика перезаписи, и она частично перенаправляет субдомен. Если я посещаю URL http://subdomain.clientcollabhq.com/some/path, он перенаправляется правильно, но если я посещаю http://subdomain.clientcollabhq.com/, он пропускает блоки RewriteCond для субдомена и попадает в запасной вариант RewriteRule. Есть идеи, что происходит?

#
# ClientCollabHQ
#
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.localhost
    ServerName clientcollabhq.com
    ServerAlias *.clientcollabhq.com

    DirectoryIndex index.php
    DocumentRoot "D:/wamp/www/dropbox/My Dropbox/ClientCollabHQ/www/html"
    ErrorLog "D:/wamp/www/dropbox/My Dropbox/ClientCollabHQ/www/logs/error.log"

    RewriteEngine On

    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\.clientcollabhq\.com$ [NC]
    RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.clientcollabhq\.com$ [NC]
    RewriteRule ^(.*)$ /index.php?subdomain=%2&kohana_uri=$1 [PT,L,QSA]

    RewriteRule ^(.*)$ /index.php?kohana_uri=$1 [PT,L,QSA]
</VirtualHost>

С уважением,
Andrew

1 Ответ

1 голос
/ 27 июля 2010

Я не уверен, какой раздел вы имели в виду под «отступлением», но для URL http://subdomain.clientcollabhq.com/, будет выполнено одно из следующих условий (я уверен, что это -d, потому что DirectoryIndex еще не должен был быть применен, я думаю):

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]

Причина этого в том, что ваш поддомен указывает на корень вашего сайта, который оказывается реальным ресурсом.Поскольку условия выполняются, перезапись не выполняется, и вы должны получить index.php без аргументов.Вы можете обойти это, добавив еще одно условие к первому набору, чтобы убедиться, что запрашивается что-то кроме корня, прежде чем замкнуть более поздние правила.

Например:

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]
...