htaccess重定向到正确锚定但不重命名

时间:2012-07-12 16:11:13

标签: .htaccess

目前我有这个:

RewriteRule ^Skills$ http://mypage/resume.php#Skills [NE,NC,L]

当我有网址时,它正确地重定向到锚链接:http://mypage/Skills. 但是,浏览器中的URL显示实际的锚链接:http://mysite/resume.php#Skills 而不是向我展示http://mysite.com/Skills

如何重定向和重写网址?

1 个答案:

答案 0 :(得分:0)

由于您的http://mypage目标前面有RewriteRule,因此会重定向浏览器。这会自动告诉重写引擎您想要302重定向,以便更改浏览器的地址栏。但是,这里的问题是如果你删除它只是/resume.php#Skills,它将在内部重写请求(保留浏览器的地址栏中的内容),但片段(#Skills)将是无用的。

客户端使用片段告诉它以某种方式处理它所请求的内容,通常是指向有命名锚点的页面。如果浏览器没有看到#Skills,则它不会转到“技能”命名锚点。如果您不重定向,浏览器将看不到该片段,因为它由服务器内部处理,服务器将忽略该片段。

可能有某种javascript解决方案告诉浏览器它刚加载的内容http://mypage/resume.php需要被分页到某个命名锚点。它可以通过查看浏览器的地址栏,看到它正在请求/Skills,然后onload()将页面发送到Skills锚点来实现。