首页 > 解决方案 > RewriteRules 不加载某些 css。js和图片

问题描述

目前,当我使用 RewriteRules 重写我的 URL 时,我无法加载一些 css、js 和图像文件。

我的内容.htaccess是:

<IfModule mod_rewrite.c>
    RewriteEngine On

    Options +FollowSymlinks
    # Options +SymLinksIfOwnerMatch

    RewriteBase /

    RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ news.php?newstype=$1&newsid=$2&newstitle=$3 [L,QSA,NC,B]

    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME}\.php -f 
    RewriteRule ^(.*)$ $1.php

    # RewriteRule ^(css|js|img)/?$ /$1 [L,QSA,R=301]
</IfModule>

这是我的网站的结构:

[root]
  css
    vender
      bootstrap.css
    plugin
      plugin.css
    style.css
  js
    vender
      bootstrap.js
    plugin
      plugin.js
    main.js
  images
    sliders
      slider1.jpg
      slider2.jpg
    1.jpg
    2.jgp
  index.php
  .htaccess

这就是我加载JSCSS文件的方式:

/css/style.css
/css/vender/bootstrap.css
/css/plugin/plugin.css

/js/main.js
/js/vender/bootstrap.js
/js/plugin/plugin.js

它只加载style.css文件和main.js文件。谁能告诉我,不加载子文件夹中的其他文件有什么问题?

如果我评论这一行RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ news.php?newstype=$1&newsid=$2&newstitle=$3 [L,QSA,NC,B],那么每件事都运行良好。

我还尝试将相对路径更改为绝对路径并<base href="/"><head> </head>标签之间添加。但两者都不适合我。

希望有人可以帮助我解决这个问题。

标签: apache.htaccessmod-rewriteurl-rewritingfriendly-url

解决方案


使用您显示的示例/尝试,请尝试遵循 htaccess 规则文件。

请确保在测试您的 URL 之前清除您的浏览器缓存。基本上我们需要将news.php的重写规则放在其他重写规则下。

还要确保禁用MultiViews规则中的功能,以确保只找到准确的内容。

<IfModule mod_rewrite.c>
RewriteEngine On
Options +FollowSymlinks
Options -MultiViews

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.*)/?$ $1.php [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ news.php?newstype=$1&newsid=$2&newstitle=$3 [L,QSA,NC,B]

</IfModule>

推荐阅读