【问题标题】:$this->baseUrl not behaving the same in IE and Firefox$this->baseUrl 在 IE 和 Firefox 中的行为不同
【发布时间】:2010-11-17 03:22:21
【问题描述】:

我在 Zend 中用于我的链接:

<?php echo baseUrl('/some/path/to/an/action');?>

这在 Firefox 中表现正常。该应用程序是可移植的,无需使用虚拟主机。 例如: 对于这个链接

<a href="<?php echo $this->baseUrl('/admin/users'); ?>">Manage Users</a>

预期的 URL 应该是 http://myhost/webapp_folder/public/controller/action/params 但是这在 IE 中不起作用。我得到http:///webapp_folder/public/controller/action/params。如何为 IE 解决这个问题? (微软什么时候会意识到他们一直关闭最有问题的浏览器????)

FF 中的$_SERVER 数组

[REDIRECT_STATUS] => 200
[HTTP_HOST] => localhost
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[HTTP_ACCEPT_LANGUAGE] => en-us,en;q=0.5
[HTTP_ACCEPT_ENCODING] => gzip,deflate
[HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.7
[HTTP_KEEP_ALIVE] => 115
[HTTP_CONNECTION] => keep-alive
[HTTP_REFERER] => http://localhost/industrial/public/admin/groups
[HTTP_COOKIE] => PHPSESSID=kiodpltbra87rkknebg56mcvf3
[HTTP_CACHE_CONTROL] => max-age=0
[PATH] => e:\eclipse\bin\;C:\Program Files (x86)\MiKTeX 2.8\miktex\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Common Files\Acronis\SnapAPI\;C:\Program Files (x86)\QuickTime\QTSystem\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\GTK2-Runtime\bin;e:\wamp\bin\php\php5.3.0\;C:\Program Files (x86)\Rational\common;
[SystemRoot] => C:\Windows
[COMSPEC] => C:\Windows\system32\cmd.exe
[PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
[WINDIR] => C:\Windows
[SERVER_SIGNATURE] =>
[SERVER_SOFTWARE] => Apache/2.2.11 (Win32) PHP/5.3.0
[SERVER_NAME] => localhost
[SERVER_ADDR] => 127.0.0.1
[SERVER_PORT] => 80
[REMOTE_ADDR] => 127.0.0.1
[DOCUMENT_ROOT] => E:/wamp/www/
[SERVER_ADMIN] => admin@localhost
[SCRIPT_FILENAME] => E:/wamp/www/industrial/public/index.php
[REMOTE_PORT] => 50447
[REDIRECT_URL] => /industrial/public/admin/users
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /industrial/public/admin/users
[SCRIPT_NAME] => /industrial/public/index.php
[PHP_SELF] => /industrial/public/index.php
[REQUEST_TIME] => 1289966668

IE 中的$_SERVER 数组

[REDIRECT_STATUS] => 200]
[HTTP_ACCEPT] => */*
[HTTP_ACCEPT_LANGUAGE] => en-US 
[HTTP_USER_AGENT] => Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; FunWebProducts; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)
[HTTP_ACCEPT_ENCODING] => gzip, deflate 
[HTTP_HOST] => localhost
[HTTP_CONNECTION] => Keep-Alive
[HTTP_COOKIE] => PHPSESSID=9gdgck6s21umd2afj798aofnd0
[PATH] => e:\eclipse\bin\;C:\Program Files (x86)\MiKTeX 2.8\miktex\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Common Files\Acronis\SnapAPI\;C:\Program Files (x86)\QuickTime\QTSystem\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\GTK2-Runtime\bin;e:\wamp\bin\php\php5.3.0\;C:\Program Files (x86)\Rational\common;
[SystemRoot] => C:\Windows
[COMSPEC] => C:\Windows\system32\cmd.exe
[PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
[WINDIR] => C:\Windows
[SERVER_SIGNATURE] =>
[SERVER_SOFTWARE] => Apache/2.2.11 (Win32) PHP/5.3.0
[SERVER_NAME] => localhost
[SERVER_ADDR] => 127.0.0.1
[SERVER_PORT] => 80
[REMOTE_ADDR] => 127.0.0.1
[DOCUMENT_ROOT] => E:/wamp/www/
[SERVER_ADMIN] => admin@localhost
[SCRIPT_FILENAME] => E:/wamp/www/industrial/public/index.php
[REMOTE_PORT] => 50504
[REDIRECT_URL] => /industrial/public/admin/users/
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /industrial/public/admin/users/
[SCRIPT_NAME] => /industrial/public/index.php
[PHP_SELF] => /industrial/public/index.php
[REQUEST_TIME] => 1289966883 

奇怪的是所有资源(css、js、图像)都正确加载。是链接格式不正确。

【问题讨论】:

  • 呃,我不相信这是可能的。
  • Web 浏览器不参与在 PHP 应用程序中生成 URL 的任何步骤。我不认为正在发生的事情就是你认为正在发生的事情。
  • 那我该如何解决呢?我没有想法。 Firefox 运行正常,IE 找不到链接。
  • @user 我认为 MS 已经意识到了这一点。这并不一定意味着他们能够修复它。 ;)
  • 出于其他人所陈述的原因,听起来 IE 正在为您提供网站的缓存版本。除非您在服务器端提供用户代理条件内容,否则 PHP 脚本的 HTML 输出不会有任何不同的原因。

标签: php zend-framework


【解决方案1】:

这似乎解释了一个类似的问题:

【讨论】:

  • 这样做并不能解决问题。无论我如何使用它,baseUrl 在 IE 中都表现不正常。
  • 在发布问题之前,我尝试在此处搜索解决方案。你是什​​么意思它不相关?什么不相关?
  • @user253530:他的网址与你的麻烦无关。
  • 是的,我会否决他,但我不能。我讨厌有些人只是为了发帖而发帖。
  • @user253530 其实我是想帮忙的。
【解决方案2】:
  • php 是在服务器端生成的,所以这些结果不是由浏览器生成的。但是结果会被发送到服务器的东西改变,比如标头或确切的请求地址
  • 我看到它错过了主机名,这使它看起来像一个 URL 问题,您确定在测试期间在两个浏览器中请求相同的地址吗?
  • $this->baseUrl() 在另一个回复中给出的是指 jQuery,一个客户端 javascript 库。但是您的代码调用了一个 php 函数,如果您尝试调用 jQuery 函数,这可能是一个错误。

所以,

  • 可能是 URL 问题;由于潜在的 JS 调用页面(ajax 函数?),可能会请求不同的 URL 来显示页面,或者它可能只是您为请求页面而键入的地址,或者可能是不同的服务器?例如。当您直接使用服务器的 IP 地址而不是域名请求页面时,某些配置可能会发生这种情况。
  • 这可能是其余 php 代码中的问题,例如会话问题,因为您的 FX 和 IE 将使用不同的会话。

【讨论】:

  • 刚试过 Zend_Controller_Front::getInstance()->getBaseUrl().'/admin/users';它在 IE 上的行为方式相同。所以我猜我的前端控制器没有正确初始化baseUrl。我正在使用相同的代码,我什至在免费主机上托管了该应用程序。结果相同。 IE 不工作,firefox 没有问题。
  • 好的,我刚刚意识到这仅发生在我的模块上。我的应用程序的前端(默认模块)工作正常,但由于某些奇怪的原因,模块没有使用相同的 baseUrl。我想我需要在模块的 bootstrap.php 中进行设置。建议?
  • 这种情况只发生在 IE 中。
  • 欲了解更多信息,请提供更多详细信息。页面是如何调用的?直接在两个浏览器中使用地址栏?您是否尝试在测试页面上回显基本网址?这将消除一些特定于 php 的问题。您是否在同一台服务器上尝试两者?在请求这两个域名时,您是否使用带有域名的典型网址,例如“www.mysite.com/mypage.php”?
  • 奇怪的是,baseUrl 在两个浏览器中看起来都一样。
【解决方案3】:

我可能不是来自服务器。您确定这与以下内容无关:Is it recommended to use the <base> html tag? 吗?

【讨论】:

    【解决方案4】:

    您是否有理由需要在链接中使用它?

    为什么不只是有你的链接:

    <a href="/admin/users">Manage Users</a>
    

    默认情况下,这将强制浏览器附加当前的 baseUrl。因此,如果您在“www.test.com”上浏览并且页面具有该链接,您将转到“www.test.com/admin/users”,但如果在“www.test2.com”上使用了相同的锚标记" 它会导致你去 "www.test2.com/admin/users"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多