【问题标题】:Can't get styling working on redirected page无法在重定向页面上进行样式设置
【发布时间】:2014-01-07 17:35:34
【问题描述】:

我已经为所有通过 index.php 的请求设置了我的网站

我目前的.htaccess文件如下:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

我的网站结构基于 MVC,因此它会查看控制器、操作和可选 ID 的 url。

我想重写对友好网址的新闻部分的请求。

首先,我只想让它与新闻 ID 一起使用。

所以我不想去 news/article/1,我希望它去 news/1

我已经尝试了以下规则,但无法让它发挥作用。

RewriteRule ^news/([0-9]+) /news/article.php?id=$1
RewriteRule ^news/([0-9]+) /news/article/$1

此规则显示正确的页面,但所有样式均已删除。

RewriteRule ^news/([0-9]+)$ /news/article/$1 [L]

【问题讨论】:

  • 您当前的 CSS/JS 链接实际上是什么?

标签: php html css .htaccess mod-rewrite


【解决方案1】:

您的规则看起来正确,不要忘记RewriteRule 行末尾的[L] 标志。

使用时没有样式的原因

RewriteRule ^news/([0-9]+)$ /news/article.php?id=$1 [L]

可能是因为您忘记将 CSS/Javascript 源 URL 和任何图像设置为包含绝对路径,否则它们会尝试从 article 目录中加载。

【讨论】:

  • 我已经仔细检查了 css 的 url,它们被设置为绝对路径。
  • @Stephen 我最初将错误的 RewriteRule 复制到了我的答案中。它现在可以与我的答案中的那个一起使用吗?在开发者工具的网络选项卡中(在 Chrome/Firefox 中按 F12)是否正确加载 CSS/图像资源?
  • 否 它只适用于 RewriteRule ^news/([0-9]+)$ /news/article/$1 [L] 但是,css 仍然没有显示。 css 加载正常。
  • 除了新闻中的链接之外,现在网站上没有其他链接可以使用
  • 你只有 1 个 htaccess 文件吗? newsnews/article 是真实目录吗?
【解决方案2】:

我能够通过在我的控制器中重新路由对新闻文章的所有请求来解决此问题。

【讨论】:

    猜你喜欢
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 2016-05-16
    • 2013-12-27
    • 1970-01-01
    • 2021-01-09
    相关资源
    最近更新 更多