我试图将symfony应用程序部署到我的根目录的子文件夹中,并且我试图找出如何正确执行该操作。我只是解释一下情况。我的根目录有一个名为/private
的子文件夹,其中包含一个重定向到/private/web/current/
的htaccess文件(我使用capistrano进行部署)。
- ROOT/
---- private/
------- .htaccess (1)
------- current/
----------- web/
------------- app.php
------------- .htaccess (2)
RewriteEngine On
RewriteRule ^$ /private/current/web/ [L]
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规则中都是一个菜鸟,所以有谁可以帮我解决这个问题?
提前感谢。
答案 0 :(得分:0)
我认为第一个htaccess是问题(私有之后的路径需要附加到新网址)。试试......
RewriteRule ^/private/?(.*) /private/app/web/$1
或(使用http://www.htaccessredirect.net/生成)
RedirectMatch 301 /private(.*) /private/app/web/$1