URL重写问题没有加载.css

时间:2016-01-25 01:39:45

标签: mod-rewrite url-rewriting

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

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

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

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

问题似乎是制作模板(canvas)的公司将主.css文件放在根目录中,但是将所有其余文件加载到/ css中。现在我无法使用重写来加载主.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" />
  4. 我正在将它用于模式:

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

    和重写网址:

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

    有谁知道我错过了什么?

2 个答案:

答案 0 :(得分:0)

  

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

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

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

<base href="/">

答案 1 :(得分:0)

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

1。)在page_load中添加:

Page.Header.DataBind()&#39;需要,因为我们在HEADER中有<%# %>个代码块(似乎只会导致此问题),并且页面上运行AjaxControlToolkit。这是什么打破了它,直到我们放入这个并在html中输入英镑而不是=符号。

2。)在ASPX中添加:

<%@ MasterType VirtualPath="~/dir1/dir2whateverdir/MasterPage.master" %>