我有一个页面( example.com ),主要部分有锚点( example.com/index.php#anchor , example.com/index .php#about , example.com/index.php#contact 等)以及子页面( example.com/subpage.php )。
这是 .htaccess 文件:
RewriteEngine On
DirectoryIndex index.php
ErrorDocument 404 http://example.com/my404page.php
RewriteRule ^anchor/?$ index.php#anchor [R,NE,L]
RewriteRule ^subpage/?$ subpage.php [NE,L]
子网页重写规则很有效。
对于锚链接,包括" R " (重定向)标记将URL更改为 example.com/index.php#anchor ,,但我希望该网址为 example.com/anchor 。
如果我删除 R 标记并在我的浏览器中输入 example.com/anchor ,那么它将转到索引页面并保留干净的URL(example.com / anchor)但不会滚动到锚点。
那么......有没有办法在.htaccess中实现这一点,或者有一种很好的方法可以通过JavaScript实现这一目标吗?
答案 0 :(得分:1)
使用网址重写无法做到这一点。因为浏览器在#
是URL的一部分时向下滚动...而不是在服务器端。
答案 1 :(得分:0)
您无法使用.htaccess
执行此操作。但是您可以使用以下JavaScript代码来做到这一点:
window.location = String.prototype.replace(window.location, /index\.php#(.*)/, function(match, g1){return g1;});