我将symfony2项目上传到服务器grove。主页面加载,但所有链接都被破坏。我尝试将app.php添加到网址中。它确实有效,但是:
我有这样的路线:
www.something.com/app.php/something
我希望他们成为:
www.something.com/something。
我一直在阅读,我应该在.htaccess上加上一些重写规则。
我发现了这些规则,但它们似乎不起作用:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
答案 0 :(得分:58)
在你的.htaccess文件中(在网络目录中)试试这个:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
# Explicitly disable rewriting for front controllers
RewriteRule ^app_dev.php - [L]
RewriteRule ^app.php - [L]
RewriteCond %{REQUEST_FILENAME} !-f
# Change below before deploying to production
#RewriteRule ^(.*)$ /app.php [QSA,L]
RewriteRule ^(.*)$ /app_dev.php [QSA,L]
</IfModule>
答案 1 :(得分:24)
为了改进whistlergreg的答案,我添加了一行,以便bundle文件夹不被破坏。这将确保图像等外部资源不会被破坏。
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
# Explicitly disable rewriting for front controllers
RewriteRule ^/web/app_dev.php - [L]
RewriteRule ^/web/app.php - [L]
# Fix the bundles folder
RewriteRule ^bundles/(.*)$ /web/bundles/$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
# Change below before deploying to production
#RewriteRule ^(.*)$ /web/app.php [QSA,L]
RewriteRule ^(.*)$ /web/app_dev.php [QSA,L]
</IfModule>
答案 2 :(得分:4)
您尚未启用重写模块。如果启用了mod_rewrite.c,则执行此代码。您只能在apache2中启用mod_rewrite。 http://www.unixmen.com/how-to-enable-and-disable-apache-modules/
例如在Ubuntu中:
sudo a2enmod rewrite
sudo service apache2 restart
答案 3 :(得分:0)
另外,...记得取消注释(如果已注释)apache配置:
/private/etc/apache2/httpd.conf
$ grep -oP 'request.threads\d+=\K\d+' build.properties
10
20
30
答案 4 :(得分:0)
您可以尝试提供资源的完整路径(完整网址)。我在部署第一个symfony应用程序时遇到了同样的问题
我的根目录(大多数情况下是public_html文件夹).htaccess文件看起来像这样
Options +FollowSymLinks +ExecCGI
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [NC]
RewriteRule !^projectName/ /projectName/web/app.php/%{REQUEST_URI} [L,NC]