2016-11-12 3 views
-1

Компания, в которой я сейчас работаю, имеет 3+-летний сайт, основанный на symfony 2.8. Недавно он был развернут для тестирования новому клиенту. Изображения на оригинале доступны в html, например «/bundles/bundlename/images/image.png».Почему не работает эта перезапись?

На сервере клиентов все это находится под подпапкой, поэтому URL-адрес изображения должен быть как «/d2s/bundles/bundlename/images/image.png». У нас есть файл .htaccess в веб-директории проекта так:

DirectoryIndex app.php 
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    FollowSymLinks On 

    RewriteRule /?bundles/(.*)$ /d2s/bundles/$1 [NC,R=301,L] 

    # Determine the RewriteBase automatically and set it as environment variable. 
    # If you are using Apache aliases to do mass virtual hosting or installed the 
    # project in a subdirectory, the base path will be prepended to allow proper 
    # resolution of the app.php file and to redirect to the correct URI. It will 
    # work in environments without path prefix as well, providing a safe, one-size 
    # fits all solution. But as you do not need it in this case, you can comment 
    # the following 2 lines to eliminate the overhead. 
    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$ 
    RewriteRule ^(.*) - [E=BASE:%1] 

    [,,,] 

Все остальные части работают нормально, в VirtualHost Apache Conf в AllowOverride устанавливается на все. Но этот url-переписывать просто не работает, как если бы его вообще не было.

Любая идея, что может быть неправильным?

+0

Я только что понял, что совершил концептуальную ошибку. Так как все приложение находится в подпапке (/ d2s /), вызов/bundles/никогда не достигнет docroot приложения и, следовательно, .htaccess. Независимо от того, что я положил в него, не будет работать так. Если модератор читает эту просьбу, закройте этот вопрос! – posthy

ответ

0

Установите правильную RewriteBase. Не начинайте свои внутренние шаблоны или замены RewriteRule с /. Если вы собираетесь придерживаться автоматического определения эквивалента RewriteBase, он должен предшествовать всем остальным правилам.