2012-07-12 69 views
1

目前我有这样的:htaccess的重定向到正确的锚定,但不会重命名

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

时,我有哪些URL重定向正确的锚链接:http://mypage/Skills. 然而,在浏览器的URL显示实际锚链接:http://mysite/resume.php#Skills 而不是告诉我http://mysite.com/Skills

如何重定向和重写url?

回答

0

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

在客户端使用片段来告诉它以某种方式处理它请求的内容,通常是将页面分页到存在命名锚的地方。如果浏览器没有看到#Skills,它将不会翻页到名为anchor的“技能”。如果您没有重定向,浏览器将无法看到该片段,因为它正在由服务器进行内部处理,并且服务器将忽略该片段。

可能有某种javascript解决方案告诉浏览器它刚刚加载的内容http://mypage/resume.php需要分页到某个指定的锚点。它可能能够通过查看浏览器的地址栏,看到它正在请求/Skills,并onload()它页面到Skills锚点。