重定向时,MVC URI 路由会导致地址栏上出现重复的链接


MVC URI routing causes repeated link on the address bar when redirecting

我的URL路由器有问题。在地址栏上手动键入 URL 时路由器工作正常,例如

http://localhost/mysite/home/index

我正在使用这个.htaccess文件

Options -MultiViews -Indexes
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

将所有请求重定向到根目录中的索引.php。

使用网址:

 http://localhost/mysite/home/index

它调用生成视图的控制器,在视图中我有指向主页的链接。

<a href='http://localhost/mysite/home/index/' alt='test'>HOME</a>

当我点击时,我在地址栏上得到了类似的东西

localhost/home/index/localhost/home/index/localhost/home/index

它正确地重定向,但它会导致重复的URL,如上所示,我不知道如何解决它。我点击的越多,添加的 URL 就越多。

更重要的是如何为该定位点创建 URL。如果单击锚点,则会得到参数完整路径localhost/mysite/home/index。如果您为您的网站创建一个虚拟主机,也许会更好。

通常,您不需要内部应用程序链接来包含您的域名(此处http://localhost)。如果省略此项,则应用程序中的所有链接/表单都将相对于您的域。

因此,此URL中的<a>

http://localhost/mysite/home/index

可以更清晰地表示为:

/mysite/home/index

这意味着您的应用程序将在您连接到的任何域以及任何协议(https以及http)上运行。

唯一需要显式引用域的时间是:

  • 使用header('Location: ')重定向时
  • 当您引用当前域以外的域时
  • 当您希望切换协议时