什么是Options + FollowSymLinks?

时间:2012-08-25 07:21:41

标签: linux apache lamp laravel

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

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

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

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

3 个答案:

答案 0 :(得分:13)

您可以尝试在互联网上搜索“.htaccess此处不允许的选项”。

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

  

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

一个.htaccess文件,适用于Mint Linux(放在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/)上提问,有一些非常有帮助的人在那里闲逛。

答案 1 :(得分:5)

当您访问网站并浏览到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

答案 2 :(得分:5)

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

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

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

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