symfony app_dev.php в папке вне корня документа

1

Я обновляю устаревшее веб-приложение, заменяя его части Symfony.

Моя структура папок:

/symfony            <---symfony install
/trunk              <---document root

Корень документа - это соединительная линия /, так что изменения в устаревшем приложении минимальны.

В моей конфигурации виртуального хоста я:

<VirtualHost *:80>
    ServerName webapp.example.com

    DocumentRoot /path/to/project/trunk

    Alias /ajax ../symfony/web
    Alias /app_dev.php/ ../symfony/web/app_dev.php

</VirtualHost> 

Запрос на работу webapp.example.com/ajax

Однако запрос к webapp.example.com/app_dev.php/ajax приводит к ошибке 404.

Примечание. Мне нужно переписать только пути, начинающиеся с /app_dev.php/, т.е. включают конечную косую черту.

Теги:
routing
apache2.4
mod-alias

2 ответа

0
Лучший ответ

Согласно http://httpd.apache.org/docs/2.4/mod/mod_alias.html#alias

"Подбираются только полные сегменты пути"

что означает, что я не могу использовать псевдоним для перезаписи файла app_dev.php.

Вместо этого нужно использовать Aliasmatch. Также он не поддерживает относительные пути, по крайней мере, не на Apache 2.4.10, но я не мог найти документацию об этом.

<VirtualHost *:80>
    ServerName webapp.example.com

    DocumentRoot /path/to/project/trunk

    Alias "/ajax" "../symfony/web"
    AliasMatch "^/app_dev.php/(.*)" "/path/to/project/symfony/web/app_dev.php/$1"

</VirtualHost>
1

РЕДАКТИРОВАТЬ

Это ссылка на документацию apache http://httpd.apache.org/docs/2.4/mod/mod_alias.html#alias

Проблема заключается в завершении косой черты в конце второй директивы Alias

Попробуйте изменить это:

Alias /app_dev.php/ ../symfony/web/app_dev.php

к этому:

Alias "/app_dev.php" "../symfony/web/app_dev.php"

Из документов:

Note that if you include a trailing / on the URL-path then the server will require a trailing / in order to expand the alias. That is, if you use

Alias "/icons/" "/usr/local/apache/icons/"
then the URL /icons will not be aliased, as it lacks that trailing /. Likewise, if you omit the slash on the URL-path then you must also omit it from the file-path.

Другой вариант

Если это не сработает, попробуйте удалить вторую директиву Alias, поскольку вы уже указываете на папку symfony/web с URL-адресом /ajax URL.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню