Файл не найден с VirtualHost и mod_rewrite

Я создаю RESTful API, основанный на Тонике. На моей машине разработчика и нашем сценическом сервере мы используем виртуальные хосты.

Тоник использует файл.htaccess для перевода входящих звонков в свой файл dispatcher.php. Это прекрасно работает на серверах без VirtualHosts.

Однако, если я включаю VirtualHosts, я получаю файл, который не найден, даже думая, что путь и имя файла верны.

Вот настройка VirtualHost на моей машине разработчика.

<VirtualHost *:80>
    ServerAdmin admin@xxxxxxxxxxxx
    ServerAlias *.dev.xxxxx
    VirtualDocumentRoot /home/xxxxxxxx/workspace/%1
    <Directory /home/xxxxxxxx/workspace/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>

</VirtualHost>

И.htacces Тоника, расположенный в папке rest в корне проекта:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !dispatch\.php$
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule .* dispatch.php [L,QSA]
</IfModule>

Звонок на http://project.dev.xxxxx/rest/ дает:

Not Found
The requested URL /home/xxxxxxxx/workspace/project/rest/dispatch.php was 
not found on this server.

Apache/2.2.22 (Ubuntu) Server at xxxxxxx Port 80

1 ответ

Решение

Похоже, что вы злоупотребляете VirtualDocumentRoot, Попробуйте изменить это на:

DocumentRoot /home/xxxxxxxx/workspace/project/rest

Кроме того, вот хорошее объяснение VirtualDynamicRoot: Динамически настраиваемый массовый виртуальный хостинг

Надеюсь, это поможет.

Другие вопросы по тегам