使用 htaccess 添加 # 符号并重定向到 url

Adding a # symbol and redirecting to a url using htaccess

我正在尝试使用 .htaccess 重写我网站上的 URL,但到目前为止还没有成功。我想向 URL 添加哈希并重定向。

我想获取 URL 中的最后一个文件并将其重定向到相同的 URL 但在最后一个文件之前附加一个 # 符号。我想这样做的原因是为了我的网站,所有内容都是动态加载的,无需刷新页面。

例如, www.example.com/foo would become www.example.com/#foo

www.example.com/form/bar.php would become www.example.com/form/#bar.php

我不介意每一页是否需要一个条目,我尝试了很多变体,但到目前为止没有任何效果。

RewriteRule ^(.*)foo(.*)$ #foo [R=301,L]

RewriteRule ^(.*)/(.*)$ /# [L,R=301,NE]

像这样...

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/* /# [NC]

在你的 .htaccess 中这样设置:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.*/)([^/]+/?)$
RewriteRule ^ %1#%2 [L,NE,R=301]

关于 RewriteCond %{REQUEST_URI} ^(.*/)([^/]+/?)$ 的注释:

我们在此处的正则表达式中使用了 2 个捕获组:

  • (.*/):匹配最后一个/之前的最长匹配,表示为%1之后
  • ([^/]+/?):匹配 URI 的最后一个组成部分表示为 %2 之后

在目标中,我们使用 %1#%2 在 2 个反向引用之间放置一个 #