2009-06-02 115 views
1

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

我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在请求中加入锚点信息,但是我一直没能找到任何记录这些信息的东西,并且一直试图自己写几个小时没有成功。

谢谢!

回答

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
,另外它们不会搞乱缓存。

(哇,已经是午夜了?)

+1

+1,好点,我误解了问题,并认为这是相反的方式。 – 2009-06-02 21:18:37

+0

嗯,我有点误解了这个问题 - 虽然这种重定向是可能的,但它不会对用户透明,因为它不能在服务器端完成,只能使用HTTP重定向。 – grawity 2009-06-02 21:22:10

+0

当然可以。需要HTTP重定向。 – 2009-06-02 21:23:28