'hash'url在.htaccess中重写

blu*_*dtt 19 .htaccess mod-rewrite

我想重写http://example.com/articles.html#first-articlehttp://example.com/articles/first-article

有可能重写吗?

我尝试使用以下但不适合我:

RewriteRule ^articles/(.+)$ /articles\.html\#$1
Run Code Online (Sandbox Code Playgroud)

Fel*_*a A 37

#可与NE标志替换URL添加.校验:

所以,你可以试试这个:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI}  !articles\.html      [NC]
RewriteCond %{REQUEST_URI}  ^/articles/([^/]+)/? [NC]
RewriteRule .*       /articles.html#%1           [R,NE,L]
Run Code Online (Sandbox Code Playgroud)

重定向

http://example.com/articles/parameter

http://example.com/articles.html#parameter

articles假设字符串是固定的,而parameter假设它是可变的.

  • 将**重定向到**锚不是问题. (21认同)
  • 这不回答这个问题,但很有用 (9认同)
  • **重定向到锚点是问题**。标题是:**'hash' url rewrite in .htaccess**,其中 HASH 表示 ANCHOR。问题中的示例是:`RewriteRule ^articles/(.+)$ /articles\.html\#$1`。由于示例的目标 URL 中有一个 ANCHOR (#),因此问题显然是在寻求一种重定向到 ANCHOR 的方法。现在,这个答案很重要,因为它澄清了一个常见的误解,即 **ANCHOR** 永远不会“...发送到服务器”,这与 [Apache 文档](http://httpd.apache.org/docs/ 2.2/rewrite/advanced.html#redirectanchors)。 (2认同)

Fab*_*ler 21

不,这是不可能的.该URL片段(一切从#上)甚至没有被发送到服务器.

也许您想要考虑基于JavaScript的解决方案,其中实际内容将通过AJAX加载,具体取决于片段.您将在此处找到有关此方法的一些有用信息:Facebook中的shebang/hashbang(#!)和新的Twitter URL是什么?

  • 取决于这个问题.@faa的答案是正确的,但它没有解决原始海报的问题. (9认同)
  • 这应该被取消选择作为正确的答案,因为它是不正确的.@faa的答案实际上是正确的. (7认同)
  • 好点,当我第一次读它的时候,我有点累,我的坏。 (2认同)
  • 问题询问一种删除“#”字符的方法(Apache 称为 **ANCHOR**)。你说“不,这是不可能的”和“重定向到锚点不是问题”。那么,为什么要在第一行回答呢?您还说:“URL 片段(从 # 开始的所有内容)甚至没有发送到服务器。” 在我看来,完全**错误**。正如 Apache 文档中所解释的,“URL 片段”在未转义时确实被**发送**。我自己尝试过,除非 Apache 是错的而你是对的,否则你的说法是不准确的。@Alameda 的答案确实回答了这个问题,恕我直言。 (2认同)