【发布时间】:2013-07-12 22:36:41
【问题描述】:
常见问题,但对我来说太复杂了。
以下是我试图满足的要求:
- 根 URL http://example.com 应重定向到 http://www.example.com
- 所有像http://example.com/c/1234567890 这样的网址都应该重定向到http://www.example.com/c/1234567890(注意“c”假子目录)
- 输入 http://example.com/index.php 时,应将其重定向到 http://www.example.com(没有尾部斜杠)
- 除此之外,我正在尝试但未能保护子文件夹“xy”免受根目录和 javascript 文件中的 php 文件的直接访问。
我搜索了很多,尝试了很多重写条件和规则,但是htaccess+regex对我来说只是来自另一个星球。 :/ 抱歉,如果这是重复的……
【问题讨论】:
-
example.com/[something] 中是否有不应重定向到 www,example.com/[something] 的地址?我问是因为满足第一个要求的通常方式可以重定向所有关联的路径,而不仅仅是顶部。
-
嘿,不会有像 example.com/[something] 这样的地址,只有 example.com/search?=xy。其他所有内容都包含虚假子文件夹“c”,这意味着它将是 example.com/c/[something]
-
因此,如果没有人寻找“c”,而只是将所有内容从 example.com 重定向到 www.example.com,保留斜杠之后的内容,这会处理 #1 和 #2,对吧? #3 也是这样吗?不像写的那样...#3 是否正确,您希望 example.com/index.php 去 www.example.con 没有 / 也没有 /index.php?还是您希望 example.com/index.php 转到 www.example.com/index.php ?如果您认为#3 是错误的,您可以点击编辑并修改它。
-
我已经有一段时间没有真正做过这些了,所以我会让其他人试一试。 #4 比 1-3 更难。简单但业余的方法是检查由网络浏览器(如 IE 或 Chrome 或 Firefox)填写并发送到服务器的 REFERER 字段,以查看它是否与页面的域名匹配。它会阻止普通好奇的人直接使用浏览器访问该文件夹。它不会阻止使用各种工具的脚本,因为来自 Web 浏览器的所有字段都可以被该工具伪造。 CSRF 令牌更好,但涉及更多。
-
我希望我没有理解你的意思:) 如果有人在最后输入带有“index.php”的 url,它应该去掉“index.php”并重定向到 www.example.com跨度>
标签: .htaccess