【问题标题】:What is Options +FollowSymLinks?什么是选项 +FollowSymLinks?
【发布时间】:2012-08-20 15:29:46
【问题描述】:

我在我的计算机上使用 Lamp 服务器。我开始使用 Laravel php 框架。 在我的 .htaccess 中,如果我使用 Options +FollowSymLinks ,我会收到 500 错误。 如果我注释掉,我必须在我的所有地址中使用index.php ..example:

 /~ytsejam/blog/public/index.php/login

我使用 Arch Linux 。有办法解决吗?

编辑:我通过使用虚拟主机解决了这个问题。并删除 laravel 文件夹中的 index.php from application/config/application.php

【问题讨论】:

  • 好吧,服务器日志说 500s 怎么样?
  • 服务器错误!服务器遇到内部错误,无法完成您的请求。服务器过载或 CGI 脚本出错。
  • [2012 年 8 月 25 日星期六 10:23:33] [alert] [client ::1] /home/ytsejam/public_html/blog/public/.htaccess:此处不允许使用选项

标签: php linux laravel apache lamp


【解决方案1】:

您可以尝试在互联网上搜索“.htaccess Options not allowed here”。

我发现的一个建议(使用谷歌)是:

检查以确保您的 httpd.conf 文件具有 AllowOverride All。

一个适用于 Mint Linux 的 .htaccess 文件(位于 Laravel /public 文件夹中):

# Apache configuration file
# http://httpd.apache.org/docs/2.2/mod/quickreference.html

# Turning on the rewrite engine is necessary for the following rules and
# features. "+FollowSymLinks" must be enabled for this to work symbolically.

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
</IfModule>

# For all files not found in the file system, reroute the request to the
# "index.php" front controller, keeping the query string intact

<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

希望这对您有所帮助。否则你可以在 Laravel 论坛 (http://forums.laravel.com/) 上提问,那里有一些非常乐于助人的人。

【讨论】:

    【解决方案2】:

    当您访问网站并在 Web 浏览器中浏览到 /system/files/images 文件夹时,服务器如何知道它应该从 /pictures 文件夹中提取 image.png?所谓的符号链接是负责此行为的人。在您的系统中某处,有一个符号链接告诉您的服务器“如果访问者请求 /system/files/images/image.png,则向他显示 /pictures/image.png。”

    FollowSymLinks 设置在其中的作用是什么?

    FollowSymLinks 涉及服务器安全。在处理 Web 服务器时,您不能只保留未定义的内容。你必须告诉谁可以访问什么。 FollowSymLinks 设置告诉你的服务器它是否应该遵循符号链接。换句话说,如果在我们的例子中禁用了 FollowSymLinks,浏览到 /system/files/images/image.png 文件将根据其他设置返回 403(禁止访问)或 404(未找到)错误。

    http://www.maxi-pedia.com/FollowSymLinks

    【讨论】:

      【解决方案3】:

      参数Options FollowSymLinks 使您可以在您的webroot 中有一个symlink 指向其他文件/目录。禁用此功能后,Apache 将拒绝遵循此类符号链接。可以改用更安全的Options SymLinksIfOwnerMatch - 这将允许您仅链接到您拥有的其他文件。

      如果你在.htaccess 中使用Options 指令和在Apache 主配置中被禁止的参数,服务器将返回HTTP 500 错误代码。

      允许的 .htaccess 选项由 Apache 主配置文件中的指令 AllowOverride 定义。要允许符号链接,该指令需要设置为AllOptions

      除了允许使用符号链接,在.htaccess 上下文中启用mod_rewrite 也需要该指令。但为此,也可以使用更安全的SymLinksIfOwnerMatch 选项。

      【讨论】:

      • 您知道为什么 .htaccess 文件中的mod_rewrite 需要它吗?我在文档中看到了这个资格,但除了“安全原因”之外没有任何解释......
      • 是的,这是为了安全 - 控制用户对 mod_rewrite 虽然 .htaccess 文件的使用。如果它有单独的参数会更好,但也许 Apache 模块无法为AllowOverride 引入新参数,所以他们选择了现有参数之一......
      • 我想我的问题,换一种说法,是:恶意的人能做什么,而这个额外的AllowOverride 要求可以防止?我看不出它实际上给你买了什么......
      • 哦!你拯救了我的一天。这是有效的。 Options SymLinksIfOwnerMatch
      猜你喜欢
      • 2012-03-31
      • 2012-10-10
      • 2012-08-07
      • 2013-03-03
      • 2019-04-26
      • 2011-08-04
      • 2013-08-26
      • 2010-09-10
      • 1970-01-01
      相关资源
      最近更新 更多