【问题标题】:Symfony 2: The Web server doesn't rewrite the URLSymfony 2:Web 服务器不会重写 URL
【发布时间】:2016-06-09 11:13:14
【问题描述】:

当我这次将我的网络应用程序 (Symfony2) 投入生产时,服务器不会重写(它经常这样做)URL,我不知道为什么。我通常使用根目录和 web 文件夹中的 .htaccess 文件。

.htaccess 在根目录:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ web/$1 [QSA,L]

.htaccess in /web:

重写引擎开启 RewriteCond %{REQUEST_FILENAME} !-f 重写规则 ^(.*)$ web/$1 [QSA,L]

服务器产生以下错误:

内部服务器错误

服务器遇到内部错误或配置错误,无法完成您的请求。

请通过 webmaster@subdomaine_goes_here.domaine_goes_here.com 联系服务器管理员,告知他们此错误发生的时间,以及您在此错误之前执行的操作。

服务器错误日志中可能会提供有关此错误的更多信息。

此外,在尝试使用 ErrorDocument 处理请求时遇到 500 Internal Server Error 错误。

【问题讨论】:

标签: php apache .htaccess symfony mod-rewrite


【解决方案1】:

您不需要根目录中的 .htaccess,您的 web 目录中需要 .htaccess,并且域应设置为指向 web 目录。当然它可以定制,但它是最好的解决方案(无法从浏览器访问 php 文件)。 .htaccess 应该在生产中指向 web/app.php

整个服务器配置部分可以在:http://symfony.com/doc/current/cookbook/configuration/web_server_configuration.html

【讨论】:

  • 当我从根目录中删除 .htaccess 时,服务器看起来好像没有索引 web 文件夹:禁止您无权访问此服务器上的 /。此外,在尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误。
  • 因为 symfony 中没有 index.php 文件,所以需要在 app.php 上指向它,而不是整个配置在我在答案中给你的链接上
  • 更改您的DocumentRoot 和Directory 排序,使其指向web 目录(例如public_html/web)。好的 .htaccess 将被使用并自动将app.php 视为DirectoryIndex。
  • 我不认为它可以工作,因为当我转到 iballot.yameinstitute.com/web 时,我仍然得到同样的错误(点击链接查看错误)
  • 您在域检查虚拟主机设置上仍然指向错误目录。如果你去iballot.yameinstitute.com/web/app.php 它工作。所以主机配置是错误的
【解决方案2】:

通过将两个 .htaccess 文件放入项目文件夹中成功解决了问题(记住:我使用的是子域):

在根目录/: 重写引擎开启 RewriteCond %{REQUEST_FILENAME} !-f 重写规则 ^(.*)$ web/$1 [QSA,L]

在 /web 文件夹中:我保留了 symfony 2.7 附带的原始 .htaccess 文件

【讨论】:

    猜你喜欢
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多