Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Internet explorer URL重写问题与IE-导致其附加_Internet Explorer_Url_Rewrite - Fatal编程技术网

Internet explorer URL重写问题与IE-导致其附加

Internet explorer URL重写问题与IE-导致其附加,internet-explorer,url,rewrite,Internet Explorer,Url,Rewrite,我有下面的URL重写类似于 RewriteRule ^event/([0-9]+)/$ page1.php?title=$1 [NC,L] RewriteRule ^view/([0-9]+)/$ page2.php?id=$1 [NC,L] 当我转到domain.com/app/event/3/时,它会转到正确的URL 在这个页面中,我有一个JavaScript,它有以下onclick事件 location.href = "view/5/"; 在所有浏览器

我有下面的URL重写类似于

RewriteRule   ^event/([0-9]+)/$   page1.php?title=$1   [NC,L]

RewriteRule   ^view/([0-9]+)/$    page2.php?id=$1      [NC,L]
当我转到
domain.com/app/event/3/
时,它会转到正确的URL

在这个页面中,我有一个JavaScript,它有以下
onclick
事件

location.href = "view/5/";
在所有浏览器中,这被翻译为
domain.com/app/view/5/
。但在IE(8和9)中,它最终成为
domain.com/app/event/3/view/5/


它似乎只是附加到上一个URL。

IE的行为与预期一致。
href
中的相对路径应解释为相对于当前路径,因为标记不知道服务器端的结构,除非您告诉它

你遇到的问题也发生在我的Chrome上,这是应该的。如果希望根据基本路径解析相对URL,则需要从一开始就在
href
中提供,或者通过
中的
标记提供:


由于我们已指示浏览器根据
部分中
元素的
href
解析任何相对路径,因此上述操作将按预期进行。如果您不这样做,浏览器将解析规范中任何
关于相对URL的相对
href

用户代理必须根据以下先决条件(从最高优先级到最低优先级)计算基本URI:

  • 基本URI由基本元素设置
  • 基本URI由协议交互期间发现的元数据给出,例如HTTP头(请参见[RFC2616])
  • 默认情况下,基本URI是当前文档的URI。并非所有HTML文档都有基本URI(例如,有效的HTML文档可能出现在电子邮件中,并且可能不由URI指定)。如果这些HTML文档包含相对URI并依赖于默认的基本URI,则认为它们是错误的。(增加重点)
  • 同样,如果您希望看到相对
    href
    值解析为您的基本url,您需要在链接本身中或通过
    元素提供该基本url,就像我在上面的示例中所做的那样

    需要考虑的其他事项: 我想回到这个问题,并记录一些其他可能需要考虑的事情。访问锚定的
    href
    属性的各种方法返回不同的结果

    考虑以下几点:

    var-anchor=document.createElement(“a”);
    setAttribute(“href”,“foo.php?fizz=buzz”);
    console.log(“href:+anchor.href”);
    log(“getAttribute:+anchor.getAttribute(“href”);
    
    以下是各种版本的Internet Explorer的输出:

    Internet Explorer 6-7

    href:foo.php?fizz=buzz
    getAttribute:foo.php?fizz=buzz
    
    Internet Explorer 8-10

    href:http://fiddle.jshell.net/_display/foo.php?fizz=buzz
    getAttribute:foo.php?fizz=buzz
    
    自Internet Explorer 8以来,
    .href
    属性根据当前文档位置自动解析完整URI,并将锚定的
    href
    值附加到末尾。这与我们在其他现代浏览器中看到的行为相同


    因此,如果您只需要获取
    href
    值,最好使用
    .getAttribute(“href”)
    而不是访问
    .href
    属性。

    谢谢您的回复。我忘了提到我在标题中有一个基本路径:
    我已经将问题隔离到javascript。如果我将锚定标记与href一起使用,那么它可以正常工作。但是,如果我有一个jquery click事件,其中location.href被设置为event/2/lang/ar/那么它会转到/event/2/event/2/lang/ar-正如您所看到的,url会附加到以前的url中。这只发生在IE@JesbinBaidya中,您使用的实际
    标记是什么;JOnathan,我知道我在使用@JesbinBaidya之类的东西,但是HTML中显示的最终输出是什么?