symfony2重写规则.htaccess app.php

我上传了我的symfony2项目到服务器林。 主页面加载,但所有的链接被打破。 我尝试添加app.php的url。 它确实有效,但是:

我有像这样的路线:

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> 

在您的.htaccess文件(在web目录内)试试这个:

 <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> 

为了改进whistlergreg的答案,我添加了一行,以便捆绑文件夹不被破坏。 这将确保图像等外部资源不被破坏。

 <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> 

您没有启用重写模块。 如果启用了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 

另外,请记住取消注释(如果注释)的Apacheconfiguration:

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

MACOSX

/private/etc/apache2/httpd.conf

你可以尝试给你的资产的完整path(完整的url)。 当我部署我的第一个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]