我正在尝试在使用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在请求中包含锚信息,但是我无法找到任何记录这一点的内容,并且一直尝试自己写几个小时都没有成功。
谢谢!
答案 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>
(哇,已经午夜了?)