【问题标题】:Htaccess CSS not workingHtaccess CSS不起作用
【发布时间】:2015-06-07 13:49:08
【问题描述】:
RewriteEngine On
RewriteBase /games4u/
RewriteRule    ^index/?$    index.php    [NC,L]

RewriteRule ^forum/([a-zA-Z0-9_-]+)$ forum.php?user=$1
RewriteRule ^forum/([a-zA-Z0-9_-]+)/$ forum.php?user=$1

所以我想要的网址是:localhost/forum/1 1 = 用户 ID 1。但设计不会因此而加载。就像 CSS 文件被删除之类的。为什么 thios 不起作用?

【问题讨论】:

  • 使用 Firebug 在 Firefox 中打开站点,或者使用开发者工具在 Chrome 中打开站点,这样您就可以看到实际调用了哪个 URL 来检索 CSS。如果您使用相对路径,它们可能会被重写为与您期望的不同的东西。例如,“src=test.css”会导致请求“forum/test.css”(或 forum/1/test.css)。

标签: php .htaccess get


【解决方案1】:

当您在 URL 中添加额外的 / 斜杠时,这会改变相对 URL 基础的内容。浏览器不知道/games4u/ 是forum.php 代码生成的相对URL 的基础。现在您已经添加了另一级文件夹/games4u/forum/username,浏览器会尝试通过将基础:/games4u/forum/ 添加到所有链接来解析相对 URL。您需要在页眉中指定您的基础或将所有链接设为绝对链接(以/games4u/ 开头):

<base href="/games4u/" />

RewriteBase 指令与基于浏览器的相对 URL 无关。浏览器甚至不知道您正在使用重写规则。 RewriteBase 指令仅适用于 RewriteRules 中的相对路径。

【讨论】:

    【解决方案2】:

    你需要为你的重写设置条件,忽略文件夹和文件:

    RewriteEngine On
    RewriteBase /games4u/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule    ^index/?$    index.php    [NC,L]
    RewriteRule ^forum/([a-zA-Z0-9_-]+)$ forum.php?user=$1
    RewriteRule ^forum/([a-zA-Z0-9_-]+)/$ forum.php?user=$1
    

    另外,建议您使用 css / js 文件的完整路径,例如:

    <script src="http://www.example.com/js/file.js"></script>
    

    【讨论】:

    • 在这种情况下使用 REQUEST_FILENAME 不会产生影响,因为包含的资产很可能与原始规则中指定的路径命名不同。此外,这两个条件只会影响第一条规则。但是,您答案的第二部分是正确的。
    猜你喜欢
    • 1970-01-01
    • 2012-05-27
    • 2020-12-29
    • 1970-01-01
    • 2014-05-11
    • 2012-12-10
    • 1970-01-01
    • 2016-03-28
    相关资源
    最近更新 更多