【问题标题】:mod rewrite (css/images)mod重写(css /图像)
【发布时间】:2011-05-27 13:27:38
【问题描述】:

我使用以下内容重写我的网址:

RewriteCond %{THE_REQUEST} \.html
RewriteRule ^(.+)\.html$ /$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.+)$ $1.html

问题是这会导致 css 和图像不出现 - 有没有办法可以将规则从 css 和 images 文件夹等文件夹中排除,以便按应有的方式显示而不是死图像而不是 css? 谢谢天使xx

【问题讨论】:

  • 看起来像第二个RewriteCond中的类型。 \.html之前应该有空格吗?
  • 你能显示一个不起作用的 CSS URL 吗?在浏览器中打开它会发生什么?

标签: css image apache mod-rewrite


【解决方案1】:

最佳实践:

包括所有css /图像和js文件 当您应用.htaccess 进行 URL 重写时,使用 绝对路径 而不是 相对路径

【讨论】:

  • 不幸的是,这与它无关。
  • 我以前从来没有做过这样的事情。你能解释一下你的答案,为什么必须这样做?
  • @wesley 他正在使用[R=301,L] 那是为什么?无论如何这是最佳实践
  • 很抱歉假设,但我认为这不是必需的,可以修复 RewriteRule。关于第一个的东西看起来不对,但也许是我缺乏理解。编辑:事后看来,我总是使用/absolute/paths,所以这可以解释为什么我从来没有遇到过问题:D 谢谢!
【解决方案2】:

试试

RewriteCond %{REQUEST_URI} \.html$
RewriteRule ^(.*)\.html$ $1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !/(css|images|js)/
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html

用您的文件夹名称替换css|images|js,以|分隔

希望这会有所帮助...

【讨论】:

    【解决方案3】:

    将您的完整域放在您的 css 链接中:

    <link rel="stylesheet" type="text/css" href="css/style.css" media="all" />
    

    <link rel="stylesheet" type="text/css" href="http://www.yourdomain.com/css/style.css" media="all" />
    

    使用重写 url 时,您会得到目录:yoururl.com/dir/dir/item.html 使您的 html 中指向 css 文件的路径不正确。

    如果您想避免这种情况,最好使用 css 文件的完整路径。您的浏览器不理解您正在重写 url,因此它认为您只是在浏览槽目录。

    【讨论】:

    • 这真的有必要吗?你能解释一下吗?
    • 好吧,当使用重写 url 时,您会得到目录:yoururl.com/dir/dir/item.html 使您的 html 中的 css 文件路径不正确。所以最好的办法是给你的css文件设置一个完整的路径来避免这种情况。
    【解决方案4】:

    你可以改变

    <link rel="stylesheet" type="text/css" href="css/style.css" media="all" />
    

    <link rel="stylesheet" type="text/css" href="/css/style.css" media="all" />
    

    “/”作为您主机上的根目录。与“/image/...”类似。

    希望这会有所帮助...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      相关资源
      最近更新 更多