1

我正在尝试在使用 mod_rewrite(在 Ubuntu Server 9.04 上运行的 Apache2)的网站上设置页面锚点。

我的 htaccess 文件如下所示:

RewriteEngine On
RewriteRule ^information.php/([A-Za-z0-9-]+)/?$ information.php?display=$1  [NC,NE]

如果我使用常规 URL,查询将如下所示:http://mydomain/information.php?display=faq#cost

我希望得到这样的东西: http://mydomain/information/faq/cost

这可能吗?我的理解是 modrewrite 会忽略页面锚点,而浏览器会处理它吗?我猜我可以以某种方式使用 mod_rewrite 将锚信息包含在请求中,但是我无法找到任何记录这一点的东西,并且我自己尝试编写它几个小时都没有成功。

谢谢!

4

1 回答 1

3

实际上,如果您希望生成的URL 有一个锚点,那么是的,这是可能的。只是不要忘记在 Apache 配置中,# 标记注释的开始。

如果你想要的是这样 - 用户输入

http://example.com/page/anchor
并被重定向到
http://example.com/?p=page#anchor
- 你需要使用 301 重定向,或者类似的东西,所以它对用户来说是不透明的。

结论:虽然可以编写这样的重定向规则,但不能完全在服务器端完成。所以我认为你可以指向/information/faq然后/information.php?display=faq使用 URL,例如:

http://example.com/information/faq#foo
这几乎是您想要的,而且它们不会弄乱缓存。

(哇,已经午夜了?)

于 2009-06-02T21:12:07.303 回答