没有符号链接的htaccess modrewrite?

时间:2012-01-06 08:09:54

标签: php apache .htaccess mod-rewrite

我总是理解(除非我误解)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和 的情况下实现相同的结果,而无需通过系统中的每个脚本并更改导航链接 < /强>

3 个答案:

答案 0 :(得分:4)

如果启用以下内容,

modrewrite也会起作用:

Options +SymlinksIfOwnerMatch

这会导致Apache检查链接和目标的所有者,并且只有在所有者匹配时才会跟踪链接。

也许你的服务器人会接受这种风险降低了吗?

此处有更多信息:http://onlamp.com/pub/a/apache/2004/02/19/apache_ckbk.html

答案 1 :(得分:3)

Apache文档陈述

  

如果管理员已禁用用户目录的FollowSymLinks覆盖,则无法使用重写引擎。出于安全原因,需要此限制。

检查此链接:

http://httpd.apache.org/docs/current/mod/mod_rewrite.html

答案 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信息