我正在尝试将网址重定向到带有锚标记的网页。重定向有效但如何在重定向后保留原始URL而不是重定向。
我想将www.example.com/caves/
重定向到www.example.com/trips.html#caves
。
当我重定向时,我会收到网址www.example.com/trips.html#caves
,但希望它保留www.example.com/caves/
。
我花了很长时间寻找答案,但没有运气,任何帮助将不胜感激
这是我在htaccess中的代码
RewriteEngine on
RewriteRule ^Caves/(.*) /trips.html#Caves [NE,L,R]
答案 0 :(得分:1)
我怀疑它可以做到。 Anchor是一个客户端指令,您无法通过服务器端重写来“隐藏”它(如果浏览器看不到,则浏览器无法跳转到锚点),因此锚点必须位于地址栏URL中。
答案 1 :(得分:0)
...如何在重定向后保留原始网址,而不是重定向的网址。
您需要内部重写,而不是外部重定向 - 这是您目前使用R
(重定向)所做的事情RewriteRule
上的旗帜。
RewriteRule ^Caves/(.*) /trips.html#Caves [NE,L,R]
通常,您只需删除R
标记即可将原始网址保留在地址栏中。请求在内部重写到/trips.html
。
然而,片段标识符(即#Caves
- 或严格 #
之后的所有>都将丢失。该请求将重写为/trips.html
,而不是/trips.html#Caves
。片段标识符由客户端而不是服务器评估,毫无疑问,客户端JavaScript使用它来显示适当的内容。由于内部重写,客户端JavaScript永远不会看到片段标识符。
但是,如果您在内部重写请求(即。/Caves/
仍然存在于地址栏中),则您的客户端代码不需要#Caves
片段标识符。它可以简单地查看原始URL,即。而是/Caves/
。但这需要对客户端代码进行少量更改。
(除了... 请注意,您在代码中使用Caves
(大写第一个字母),但在您的描述中引用caves
(全部小写)。您编写的指令区分大小写,因此在您的说明中应该是/Caves/
,而不是/caves/
?)