Apache 通过.htaccess将锚添加到url

Apache 通过.htaccess将锚添加到url,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我希望.htaccess文件能像这样转换URL: http://localhost/onepage/ http://localhost/onepage/#body 进入如下URL: http://localhost/onepage/ http://localhost/onepage/#body 因此,必须在URL中添加#body后缀 Apache版本是2.4。“重写”模块已打开并工作 .Htaccess文件正在被解析,并本地化在index.php文件的目录中 80的端口上没有任何虚拟主机

我希望.htaccess文件能像这样转换URL:

http://localhost/onepage/
http://localhost/onepage/#body
进入如下URL:

http://localhost/onepage/
http://localhost/onepage/#body
因此,必须在URL中添加
#body
后缀

Apache版本是2.4。“重写”模块已打开并工作

.Htaccess文件正在被解析,并本地化在index.php文件的目录中

80的端口上没有任何虚拟主机。我在windows上使用xampp

我试过这样的代码行:

RewriteEngine On RewriteRule ^/onepage/ /onepage/#body [NE,R] #RewriteRule ^/onepage /onepage/#body [NE,R] #RewriteRule ^/onepage/$ /onepage/#body [NE,R] #RewriteRule "^/onepage/$" /onepage/#body [NE,R] #RewriteRule /?onepage/? /onepage/#body [NE,R] #RewriteRule ^/?onepage/? /onepage/#body [NE,R] #RewriteRule ^/?onepage/?$ /onepage/#body [NE,R] 重新启动发动机 重写规则^/onepage//onepage/#正文[NE,R] #重写规则^/onepage/onepage/#正文[NE,R] #重写规则^/onepage/$/onepage/#正文[NE,R] #重写规则“^/onepage/$”/onepage/#正文[NE,R] #重写规则/?onepage//一页/#正文[NE,R] #重写规则^/?onepage//一页/#正文[NE,R] #重写规则^/?onepage/?$/onepage/#正文[NE,R] 这些注释行也经过了测试,没有成功。这些线根本没用。如何获得正确的重定向


谢谢

锚(例如#body)在客户端处理,而不是服务器端。因此,mod#u rewrite无法将#body锚添加到url

如果在htaccess文件上测试这些规则,则不需要匹配RewriteRule模式中的前导斜杠,因此请删除前导斜杠

RewriteRule ^onepage/?$ /onepage#body [NE,R,L]
但是,上面的规则仍然不正确,因为目标url和模式是一致的,它将导致重定向循环

要解决这个问题,您需要为url分配一个额外的路径段

  • /一页/正文/
规则:

RewriteEngine on
RewriteRule ^onepage/body/?$ /onepage#body [NE,R,L]
现在您可以轻松重定向到

我的解决方案是:

.htaccess

#adding query string to prevent looping so RewriteCond lets rewrite only at the first time since there is not "anchor" query string.

RewriteEngine On
RewriteBase "/"
RewriteCond "%{QUERY_STRING}" !anchor
RewriteRule ^onepage/? /onepage/?anchor#body [QSA,NE,R=301]

但是,在Apache2.4文档中,有一个向url添加锚的方法,您是正确的。对不起,我没注意到。用法:RewriteRule one_page/rewrite_test.html#body[NE,R]但应该是相同的地址。我差点就解决了。查看我的答案。但我需要重定向
http://example.com/onepage/
http://example.com/onepage/#body
然后您需要使用javascript,使用htaccess是不可能的,因为#不是在服务器端实现的。它是在服务器端实现的。您可以在Apache2.4文档中看到