Я обновляю устаревшее веб-приложение, заменяя его части 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/, т.е. включить косую черту.
РЕДАКТИРОВАТЬ
Это ссылка на документацию 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.
В соответствии с
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>