45

我将我的 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>
4

5 回答 5

58

在你的 .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>
于 2012-06-22T02:46:51.707 回答
26

为了改进 whistlergreg 的回答,我添加了一行,这样 bundles 文件夹就不会被破坏。这将确保图像等外部资源不会被破坏。

<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>
于 2012-09-30T23:05:27.913 回答
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
于 2015-10-09T11:37:42.647 回答
0

此外,...记得取消注释(如果已注释)apache 配置:

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

macOSX

/private/etc/apache2/httpd.conf

于 2016-09-10T09:59:30.243 回答
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]
于 2017-08-31T07:01:42.290 回答