我正在将旧网站移植到新模板,并且遇到了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" />
对于其中任何一个页面都是完全空白的(重写):
<link rel="stylesheet" href="/style.css" type="text/css" />
或<link rel="stylesheet" href="/css/style.css" type="text/css" />
或<link rel="stylesheet" href="http://ltweb2008.serveronline.net/style.css" type="text/css" />
我正在将它用于模式:
^product/([0-9]+)/([^/]+)$
和重写网址:
/product.php?pID={R:1}
有谁知道我错过了什么?
答案 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" %>