我想从此网址http://www.sample.com/amateur1/web/app.php访问生产环境(http://www.sample.com/amateur1)中的symfony应用。
为此,我使用以下内容将.htacces文件移至http://www.sample.com/amateur1/.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /web/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
但是当我转到http://www.sample.com/amateur1时显示404错误,并且 prod.log 未写入。
我还使用了RewriteBase /amateur1/web/
因为我不知道如果 RewriteBase 路径是相对于服务器的 DocumentRoot ,还是来自< em> .htaccess 文件位于。由于此回答,我还尝试/amateur1
和/amateur1/
作为RewriteBase Symfony2: How to deploy in subdirectory (Apache)
使用三个试用版,“例外”页面显示为无样式,并且未加载任何图像。但是后来我在prod.log文件中收到以下错误:
[2013-02-15 02:06:47] request.ERROR: Symfony\Component\HttpKernel\Exception\NotFoundHttpException: No route found for "GET /amateur1/" (uncaught exception) at /home/u105859802/public_html/amateur1/app/cache/prod/classes.php line 5121 [] []
我做错了什么?
答案 0 :(得分:24)
在您的配置中,apache使用public_html
作为文档根
如果Symfony2安装在目录/home/u105859802/public_html/amateur1
中,则要提供的Symfony公共目录为/home/u105859802/public_html/amateur1/web/
你应该使用
RewriteBase /amateur1/web/
但要注意,这不安全
您必须保护您的symfony目录! (配置可访问)
为什么不尝试在您的私人区域移动您的symfony文件?
您可以将Symfony Web目录重命名为public_html
请参阅how to do that in documentation cookbook
所以,我的推荐结构如下所示:
答案 1 :(得分:0)
在大多数共享主机中,您无法覆盖Apache设置,在这种情况下可能需要在.htaccess文件中使用重定向规则
Options +FollowSymLinks +ExecCGI
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [NC]
RewriteRule !^projectName/ /projectName/web/app.php/%{REQUEST_URI} [L,NC]
这是我在项目中使用的规则。 您可能需要以其他方式提供资源的完整路径。