symfony app_dev.php在文档根目录

时间:2016-01-16 19:44:19

标签: php symfony routing apache2.4 mod-alias

我正在通过用Symfony替换部分内容来翻新遗留的Web应用程序。

我的文件夹结构:

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

文档根目录是trunk /,因此对旧版应用程序的更改很少。

在我的虚拟主机配置中,我有:

<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/开头的路径,即。包括尾部斜杠。

2 个答案:

答案 0 :(得分: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指令,因为您已经指向带有/ ajax URL路径的symfony / web文件夹。

答案 1 :(得分:0)

根据 http://httpd.apache.org/docs/2.4/mod/mod_alias.html#alias

&#34;仅匹配完整的路径段&#34;

这意味着我不能使用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>