我在电脑上使用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。
答案 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(未找到)错误。
答案 2 :(得分:5)
参数Options FollowSymLinks
使您的webroot中有一个symlink指向其他文件/目录。有了这个禁用,Apache将拒绝遵循这样的符号链接。可以使用更安全的Options SymLinksIfOwnerMatch
- 这将允许您仅链接到您拥有的其他文件。
如果在Options
中使用.htaccess
指令和主Apache配置中禁止的参数,服务器将返回HTTP 500错误代码。
允许的.htaccess
选项由主Apache配置文件中的指令AllowOverride
定义。要允许符号链接,此指令需要设置为All
或Options
。
除了允许使用符号链接外,还需要使用此指令在.htaccess
上下文中启用 mod_rewrite 。但为此,还可以使用更安全的SymLinksIfOwnerMatch
选项。