文档根目录外的文件夹中的 symfony app_dev.php
symfony app_dev.php in folder outside document root
我正在通过用 Symfony 替换它的一部分来翻新旧版网络应用程序。
我的文件夹结构:
/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/ 开头的路径,即。包括尾部斜杠。
编辑
这是 apache 文档的 link
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 文件夹.
根据
http://httpd.apache.org/docs/2.4/mod/mod_alias.html#alias
"Only complete path segments are matched"
这意味着我无法使用 Alias 重写 app_dev.php 文件。
需要使用别名匹配。而且它似乎不支持相对路径,至少在 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/"
</VirtualHost>
我正在通过用 Symfony 替换它的一部分来翻新旧版网络应用程序。
我的文件夹结构:
/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/ 开头的路径,即。包括尾部斜杠。
编辑
这是 apache 文档的 link 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 文件夹.
根据 http://httpd.apache.org/docs/2.4/mod/mod_alias.html#alias
"Only complete path segments are matched"
这意味着我无法使用 Alias 重写 app_dev.php 文件。
需要使用别名匹配。而且它似乎不支持相对路径,至少在 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/"
</VirtualHost>