使用 RewriteRule 和 include 后样式表未加载

问题描述 投票:0回答:3

我有一个网站,其中有一个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

明确地说:该网站仍然像平常一样运行,但它只是不应用样式表中的任何样式。任何帮助将不胜感激。

php html css mod-rewrite
3个回答
3
投票

如果使用相对路径包含样式表,那么这将是问题所在。 尝试使用:

/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


1
投票

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

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


0
投票

我认为您应该插入文档标题。通过这种方式,您不需要绝对更改每个文件中 stylesshet 的每个路径。

© www.soinside.com 2019 - 2024. All rights reserved.