【发布时间】:2015-03-10 16:44:57
【问题描述】:
我正在尝试将 symfony 应用程序部署到我的根目录的子文件夹中,并且我正在尝试找出正确的方法。我只是解释一下情况。我的根目录有一个名为/private 的子文件夹,其中包含一个重定向到/private/web/current/ 的htaccess 文件(我正在使用capistrano 进行部署)。
文件夹结构
- ROOT/
---- private/
------- .htaccess (1)
------- current/
----------- web/
------------- app.php
------------- .htaccess (2)
htaccess (1)
RewriteEngine On
RewriteRule ^$ /private/current/web/ [L]
htaccess (2)
DirectoryIndex app.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
RewriteRule .? %{ENV:BASE}/app.php [L]
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
RedirectMatch 302 ^/$ /app.php/
</IfModule>
</IfModule>
结果
当我请求 /private 时,我收到 symfony 错误:
No route found for "GET /private/"
当我请求 /private/login 和 /login 时,我收到 浏览器错误:
Not Found
The requested URL /private/login was not found on this server.
现在 symfony 是从根目录路由的,但是 symfony 项目的根目录实际上是 /private。我是部署和 htaccess 规则方面的菜鸟,有没有人可以帮助我解决这个问题?
提前致谢。
【问题讨论】:
-
404 Route not found 来自 symfony,所以您是否尝试过将您在浏览器中输入的 url 中的“private”替换为实际路由?无论如何,请告诉我们哪个目录是文档根目录以及您请求的 url。
-
我用一些例子更新了这个问题。
标签: php apache .htaccess symfony mod-rewrite