Php 什么是选项+;FollowSymLinks?
我正在电脑上使用Lamp服务器。我开始使用Laravel php框架。 在我的.htaccess中,如果我使用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中删除
选项+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>