【问题标题】:URL rewrite issue not loading .cssURL 重写问题未加载 .css
【发布时间】:2016-05-01 05:55:45
【问题描述】:

我正在将旧站点移植到新模板,并且遇到了Windows 2008 重写模块的问题。我正在尝试重写的链接如下所示:

http://ltweb2008.serveronline.net/product.php?pID=75

并调出页面就好了。然后我应用新的 URL 并加载正确的内容,但不再加载 模板的 style.css 文件。

http://ltweb2008.serveronline.net/product/75/any-text-here

问题似乎是制作模板(画布)的公司将主要的.css文件放在根目录中,但将其余所有文件加载到/css中。现在我无法使用 rewrite 加载主 .css 文件,当我将其移至 /css 时,它只显示一个 空白页,尽管当我查看页面源代码。

这样页面显示但不使用 style.css(重写):

<link rel="stylesheet" href="style.css" type="text/css" />

任何这些页面都是完全空白的(重写):

  1. <link rel="stylesheet" href="/style.css" type="text/css" />
  2. <link rel="stylesheet" href="/css/style.css" type="text/css" />
  3. <link rel="stylesheet" href="http://ltweb2008.serveronline.net/style.css" type="text/css" />

我将这个用于模式:

^product/([0-9]+)/([^/]+)$

还有重写 URL:

/product.php?pID={R:1}

有人知道我错过了什么吗?

【问题讨论】:

    标签: mod-rewrite url-rewriting


    【解决方案1】:

    一种解决方案是使用绝对路径(例如 /css 或 /js 而不仅仅是 css/、/js,但这看起来不是一个可靠的解决方案,因为我们必须在所有文件上更改它,

    这是因为您的相对 URI 的基数已更改。原来,当页面为/product.php?id=75时,base为/,浏览器正确填写了/base的相关链接。但是当浏览器转到像/product/75/any-text-here 这样的页面时,基础突然变为/product/,它会尝试将其附加到所有相对 URL 的前面,因此它们都不会加载。

    您可以将链接设为绝对链接,也可以更改页面标题中的 URI 基础(在 <head> </head> 标记之间):

    <base href="/">
    

    【讨论】:

      【解决方案2】:

      也许你需要一件事,也许两者都需要,我没有测试,但这为我解决了:

      1.) 在 page_load 中添加:

      Page.Header.DataBind() ' 需要,因为我们在 HEADER 中有 &lt;%# %&gt; 代码块(似乎只是标题导致此问题)与 AjaxControlToolkit 在页面上运行。这就是破坏它的原因,直到我们在 html 中放入这个并放入英镑而不是 = 符号。

      2.) 在 ASPX 中添加:

      &lt;%@ MasterType VirtualPath="~/dir1/dir2whateverdir/MasterPage.master" %&gt;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-04
        • 2014-10-23
        • 1970-01-01
        • 2016-11-07
        • 1970-01-01
        • 2018-03-03
        • 2011-09-11
        • 2011-03-23
        相关资源
        最近更新 更多