使用锚标记

时间:2016-09-18 17:32:59

标签: apache .htaccess redirect mod-rewrite

我正在尝试将网址重定向到带有锚标记的网页。重定向有效但如何在重定向后保留原始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]

2 个答案:

答案 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/?)