我总是理解(除非我误解)Apache的modrewrite引擎需要
Options +FollowSymLinks
为了工作。
我们使用modrewrite来隐藏特定系统地址中的.php扩展名,以便不透露所选择的技术 - PHP。我们知道仍然可以学习服务器技术,但您至少需要了解Web服务器的工作方式等。
问题是,服务器技术已经带来了使用+ FollowSymLinks的风险,我完全理解并同意这一点。
https://serverfault.com/questions/195570/htaccess-security
Aaron Copley:符号链接不一定是坏的,但你必须清楚地了解你的Apache实现。对于非chrooted Apache,符号链接肯定会对暴露文件构成重大风险 在文档根目录之外。
目前系统解析REQUEST_URI: 所有重写规则都写入index.php
URL domain.com/request
REQUEST_URI = /request (trimmed as "request")
Using PHP switch () we check case 'request' : inlclude xyz.php;
exit;
这是一种相当常见的技术,但是如何在不需要+ FollowSymLinks和 的情况下实现相同的结果,而无需通过系统中的每个脚本并更改导航链接 < /强>
答案 0 :(得分:4)
modrewrite也会起作用:
Options +SymlinksIfOwnerMatch
这会导致Apache检查链接和目标的所有者,并且只有在所有者匹配时才会跟踪链接。
也许你的服务器人会接受这种风险降低了吗?
此处有更多信息:http://onlamp.com/pub/a/apache/2004/02/19/apache_ckbk.html
答案 1 :(得分:3)
Apache文档陈述
如果管理员已禁用用户目录的FollowSymLinks覆盖,则无法使用重写引擎。出于安全原因,需要此限制。
检查此链接:
答案 2 :(得分:1)
好的我知道我回答了我自己的问题,但是我正在走出困境......
我之前可能已经提到该网站不会公开,因为它是一个管理系统,所以我们不关心搜索引擎
我能否做到这一点,而不是现有的已实现的modrewrite:
.htaccess文件:
ErrorDocument 404 /index.php
的index.php
header("Status: 200 OK");
header("HTTP/1.0 200 OK");
我知道这很乱,但是我们没有时间和服务器技术人员不会让步,$ _SERVER ['REQUEST_URI']应该仍然包含相同的信息???
请随时评论和关闭/ upvote,但请记住,我知道这是一个非常牛仔,它只是一个临时的解决方法
重要提示 POST请求不能以这种方式工作,因为Apache重定向到index.php(丢失POST数据),你仍然可以使用GET信息