noob问题
我正在使用php构建一个交互式网站,我决定做一个交互式菜单。好吧,我的菜单包含一个名为menu.php的文件。
<?php
echo "<ul>
<li><a href='".$_SERVER['SERVER_NAME']."/menu/register.php'>Cadastro</a><br></li>
</ul>";
?>
我不知道为什么,但是当我点击此链接时,它看起来就像那样
HTPP://本地主机/ my_site /的本地主机 /menu/register.php
编辑:如何删除其他本地主机?
提前致谢
答案 0 :(得分:7)
这是因为您没有使用http://
前缀。你必须使用
<li><a href='http://".$_SERVER['SERVER_NAME']."/menu/register.php'></li>
(假设http://
是您的网站唯一的协议)
但是,如果您有一个固定的网站结构,请考虑使用同样有效的相对路径,但不要头疼:
<li><a href='/menu/register.php'></li>
答案 1 :(得分:5)
$_SERVER['SERVER_NAME']
仅包含Web服务器/虚拟主机的名称:
'SERVER_NAME'
当前脚本正在其下执行的服务器主机的名称。如果脚本在虚拟主机上运行,则这将是为该虚拟主机定义的值。
在你的情况下,它是localhost
。并向/menu/register.php
附加路径会产生相对路径:
localhost/menu/register.php
现在,当您在基本URI为http://localhost/my_site/
的文档(或具有相同路径前缀的类似URI)中使用该URI引用时,客户端会将该相对路径localhost/menu/register.php
解析为:< / p>
http://localhost/my_site/localhost/menu/register.php
这就是你获得输出的原因。
那你到底想要完成什么?
答案 2 :(得分:4)
只需使用相对URI。
<li><a href='/menu/register.php'>Cadastro</a></li>
(您也可以抛弃<br>
。如果要填充,请使用CSS填充。)
答案 3 :(得分:1)
你必须这样写:
echo "<ul>
<li><a href='http://".$_SERVER['SERVER_NAME']."/menu/register.php'>Cadastro</a><br></li>
</ul>";
或简单
echo "<ul>
<li><a href='/menu/register.php'>Cadastro</a><br></li>
</ul>";
答案 4 :(得分:1)
你可以省略
$_SERVER['SERVER_NAME']
并使用相对路径。
答案 5 :(得分:1)
良好的做法是不要在href的
中使用服务器名称<a href="/menu/register.php">register</a>
或
<a href="menu/register.php">register</a>
应该可以正常工作
如果您确实需要使用可以使用的服务器名称:
<a href='http://".$_SERVER['SERVER_NAME']."/menu/register.php'>Cadastro</a>
额外的localhost是因为浏览器将其解释为字符串而不是URL
答案 6 :(得分:-1)
我还建议使用$ _SERVER ['HTTP_HOST']而非$ _SERVER ['SERVER_NAME'],Ankur Kumar Singh在评论中说。
<li><a href='".$_SERVER['HTTP_HOST']."/menu/register.php'>Cadastro</a><br></li>
这对我有用,并且摆脱了我网站上的本地主机问题。