目前我有这个:
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?
目前我有这个:
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?
它正在重定向浏览器,因为您的目标http://mypage
前面有一个。RewriteRule
这会自动告诉重写引擎您想要一个 302 重定向,因此您的浏览器的地址栏将被更改。但是,这里的问题是,如果您将其删除以便它只是/resume.php#Skills
,它将在内部重写请求(保留浏览器地址栏中的内容)但片段(#Skills)将无用。
客户端使用片段来告诉它以某种方式处理它请求的内容,通常是分页到有命名锚点的位置。如果浏览器没有看到#Skills
,它不会跳转到名为“技能”的锚点。如果您不重定向,浏览器将看不到该片段,因为它正在由服务器内部处理并且服务器将忽略该片段。
可能有某种 javascript 解决方案告诉浏览器它刚刚加载的内容http://mypage/resume.php
需要分页到某个命名的锚点。它可以通过查看浏览器的地址栏来做到这一点,看到它正在请求/Skills
,然后 onload() 将它分页到Skills
锚点。