我有一个文件index.php
,主要包含HTML和一些PHP。我已为某些元素声明id
s(例如<h2 id="contact">Contact</h2>
)并提供指向它们的链接(参见下文)。
<ul>
<li><a href="#contact">Contact</a></li>
</ul>
链接在单击时工作正常(即,用户被带到锚点),但是他们指向例如index.html#contact
,以便在重新加载页面时,您会收到500错误。 / p>
如何避免这种行为?为什么它会以任何方式发生?
我正在使用YAML CSS框架btw。
答案 0 :(得分:0)
<强>更新强> 你为什么不用js破解它?)
location.replace("http://www.w3schools.com");
更新结束
链接内的散列(#)表示同一页面内元素的“ID”。
href="#id" .. means index.php/#id <-- scroll to an id element
href="link" .. means index.php/link <-- redirect to file called 'link'
此外,您需要在htaccess启用时重定向到没有文件扩展名的文件。例如php / html
您的问题
检查您现有的htaccess
答案 1 :(得分:0)
尝试使用它:
<ul>
<li><a href="#contact">Contact</a></li>
</ul>
<h2><a id="contact">Contact</a></h2>
或
<script>
function getPosition(element){
var e = document.getElementById(element);
var left = 0;
var top = 0;
do{
left += e.offsetLeft;
top += e.offsetTop;
}while(e = e.offsetParent);
return [left, top];
}
function jumpTo(id){
window.scrollTo(getPosition(id));
}
</script>
&#13;
<ul>
<li><a href="#" onclick="jumpTo('contact');">Contact</a></li>
</ul>
<h2><a href="#" id="contact">Contact</a></h2>
&#13;
答案 2 :(得分:0)
您可以使用javascript滚动元素,这样网址就不会更改,重新加载页面时会显示起始网址。
答案 3 :(得分:0)
这很奇怪,因为它应该有效。正如其他人建议的那样,看看你的错误日志。与此同时,您可以尝试这种快速修复:
您可以使用php的帮助,而不是#contact
<a>
,而不是<html>
<head>...</head>
<body>
<ul>
<li><a href="<?php echo getPageUrl(); ?>#contact">Contact</a></li>
</ul>
<h2 id="contact">Contact</h2>
</body>
</html>
<?php
function getPageUrl(){
return 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
}
?>
。
<a>
这应该使您的<a href="http://example.com/index.php#contact">Contact</a>
看起来像这样
{{1}}