【问题标题】:Stylesheet does not load after using RewriteRule and include使用 RewriteRule 并包含样式表后不加载
【发布时间】:2011-06-03 12:30:32
【问题描述】:

我的网站有一个 index.php、几个简单的 .html 页面和一个 .php 页面(联系表格)以及一个 .htaccess 文件。在我的网站上,我有指向以下页面的按钮:index.php?p=welcome.php(示例)。如您所见,index.php 文件includes 一个页面,取决于GET 传递的内容。

我编写了 .htaccess 来显示:http://www.site.com/welcome/ 而不是 http://www.sites.com/index.php?p=welcome。链接和重写都有效。我遇到的唯一问题是当我单击一个按钮导航到另一个页面时:没有任何样式。

我已经测试过index.php 文件是否正确地包含了其他页面,并且确实如此。只是样式表似乎不起作用。 style.css 包含在它所属的 index.php 文件的顶部。以下是我想向您展示的一些代码:

按钮

<table>
    <tr>
        <td><a href="/welcome/"><div>Welcome</div></a></td>
    </tr>
    <tr>
        <td><a href="/references/"><div>References</div></td></a>
    </tr>
    <tr>
        <td><a href="/aboutme/"><div>About me</div></td></a>
    </tr>
    <tr>
        <td><a href="/contact/"><div>Contact</div></td></a>
    </tr>
</table>

.htaccess

RewriteEngine On
RewriteRule ^([a-z]+)/$ index.php?p=$1

明确一点:该站点仍然可以正常运行,但它只是没有应用样式表中的任何样式。任何帮助将不胜感激。

【问题讨论】:

  • 当您导航到一个单独的页面时,第二个页面是否涉及任何 index.php 源,或者这是一个干净的页面(重定向)?
  • 样式表的 URL 是什么?是 index.php?p=style.css 吗?或者那是一个普通的网址?

标签: php html css mod-rewrite


【解决方案1】:

您可能会将其包含在相对路径中?当您使用 ./ 时,您正试图从新的(不存在的?)/welcome 目录中包含一些内容。

尝试通过完整路径包含您的内容,或使用某种变量来告诉您真正的基本路径。

【讨论】:

    【解决方案2】:

    如果使用相对路径包含样式表,那就是问题所在。尝试使用:/path/to/style.css 而不是 relative/path/to/style.css

    因此,如果您的样式表位于 templates/style.css 中并且您这样引用它,那么当您将 URL http://www.site.com/index.php?page=welcome 重写为 http://www.site.com/welcome/ 时,样式表的路径是相对于该路径的:

    http://www.site.com/welcome/templates/style.css

    【讨论】:

    • 就是这样。我使用相对路径包含样式表:&lt;link type="text/css" href="style.css" rel="stylesheet" /&gt;。我已将其更改为:/style.css,现在它可以完美运行了。我想我仍然需要学习更多。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 2012-12-11
    • 1970-01-01
    相关资源
    最近更新 更多