使用mod_rewrite的页面锚点?

时间:2009-06-02 20:26:27

标签: apache mod-rewrite url-rewriting apache2 ubuntu-server

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

我的htaccess文件如下所示:

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

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:3)

实际上,如果您希望结果网址有一个锚点,那么是的,这是可能的。只是不要忘记在Apache配置中,#标记了评论的开始。

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

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

结论:虽然可以编写这样的重定向规则,但它不能完全在服务器端完成。因此,我认为您可以将/information/faq指向/information.php?display=faq,然后使用以下网址:

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

(哇,已经午夜了?)