Переписать логику взлома? - PullRequest
0 голосов
/ 31 августа 2010

В моем vHost есть следующая логика перезаписи, и, похоже, все работает в отношении перенаправления поддоменов, но как только я добавляю путь к URI, я получаю сообщение об ошибке в моем apache_error.log.

Вот логика переписывания:

    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]

Я пытаюсь нажать admin.13labs.net/login, который нужно переписать на 13labs.net/index.php?subdomain=admin&kohana_uri=/login,Тем не менее, в моем apache_error.log я получаю следующее:

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

Есть какие-нибудь подсказки?Я играю с этим уже около часа, и я в замешательстве ...

С уважением, Эндрю

1 Ответ

2 голосов
/ 31 августа 2010

Ваше второе правило перезаписи (с соответствующими условиями) выглядит так, как будто оно прекратит переписывание для любого URL. Это соответствует, если файл не имеет правильного расширения, ИЛИ не файл, ИЛИ не каталог, ИЛИ не ссылка. Ни один ресурс не может быть одновременно файлом, каталогом и ссылкой, поэтому все URL будут совпадать - и все они будут переданы как есть, поскольку ваш флаг [L] предотвращает любые последующие перезаписи.

Если вы намерены предотвратить перезапись URL-адресов, соответствующих существующим файлам, ссылкам или каталогам, удалите символы «!» Из ваших условий и удалите [ИЛИ] из условия, которое проверяет расширение файла.

...