Php 什么是选项+;FollowSymLinks?

Php 什么是选项+;FollowSymLinks?,php,linux,laravel,apache,lamp,Php,Linux,Laravel,Apache,Lamp,我正在电脑上使用Lamp服务器。我开始使用Laravel php框架。 在我的.htaccess中,如果我使用选项+FollowSymLinks,我会得到500个错误。 如果我注释掉,我必须在我的所有地址中使用index.php。例如: /~ytsejam/blog/public/index.php/login 我使用ArchLinux。有办法解决吗 编辑:我通过使用虚拟主机解决了这个问题。并从laravel文件夹中的application/config/application.php中删除

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

 /~ytsejam/blog/public/index.php/login
我使用ArchLinux。有办法解决吗


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

您可以尝试在internet上搜索“.htaccess选项此处不允许”

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

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

在Mint Linux上为我工作的.htaccess文件(放在Laravel/public文件夹中):

#Apache配置文件
# http://httpd.apache.org/docs/2.2/mod/quickreference.html
#打开重写引擎对于以下规则和操作是必要的
#特征。必须启用“+FollowSymLinks”才能使其象征性地工作。
选项+FollowSymLinks
重新启动发动机
#对于文件系统中未找到的所有文件,请将请求重新路由到
#“index.php”前端控制器,保持查询字符串完整
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)$index.php/$1[L]

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

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

FollowSymLinks设置在这方面的作用是什么

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


参数
选项后面的ymlinks
允许您在webroot中有指向其他文件/dir的。禁用此选项后,Apache将拒绝遵循此类符号链接。可以改用更安全的
选项SymLinksIfOwnerMatch
——这将允许您仅链接到您拥有的其他文件

如果在
.htaccess
中使用
选项
指令,并且参数在主Apache配置中被禁止,服务器将返回HTTP 500错误代码

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


除了允许使用符号链接外,还需要此指令才能在
.htaccess
上下文中启用mod_rewrite。但对于这一点,也可以使用更安全的
symlinksFownerMatch
选项。

服务器日志显示500s?服务器错误如何!服务器遇到内部错误,无法完成您的请求。服务器过载或CGI脚本出错。[Sat Aug 25 10:23:33 2012][alert][client::1]/home/ytsejam/public\u html/blog/public/.htaccess:不允许使用选项您知道为什么需要在.htaccess文件中重写
mod\u
?我在文档中看到过这种限定,但除了“安全原因”之外没有其他解释……是的,它是为了安全控制用户使用
mod_rewrite
尽管
.htaccess
文件。如果它有单独的参数就更好了,但是也许Apache模块不能为
AllowOverride
引入新的参数,所以他们选择了一个现有的参数……换句话说,我想我的问题是:恶意的人能做什么,这额外的
AllowOverride
要求阻止了什么?我看不出它到底给你买了什么…哦!你救了我一天。这是有效的<代码>选项符号链接所有者匹配
# 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>