RewriteRules 不加载某些 css。 js和图片

Posted

技术标签:

【中文标题】RewriteRules 不加载某些 css。 js和图片【英文标题】:RewriteRules not load some of css. js and images 【发布时间】:2021-12-19 14:58:22 【问题描述】:

目前,当我使用 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&amp;newsid=$2&amp;newstitle=$3 [L,QSA,NC,B],那么一切都很好。

我还尝试将相对路径更改为绝对路径,并在 &lt;head&gt; &lt;/head&gt; 标签之间添加 &lt;base href="/"&gt;。但这两种方法都不适合我。

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

【问题讨论】:

【参考方案1】:

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

在测试您的网址之前,请确保清除您的浏览器缓存。 基本上我们需要将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>

【讨论】:

谢谢您,先生,它的工作。我从没想过规则顺序会成为问题。我可以知道这两行是需要的吗? RewriteCond %REQUEST_FILENAME !-f RewriteCond %REQUEST_FILENAME !-d @user3733831,这些行确保仅当请求针对不存在的页面时才执行此规则,否则不会触摸/执行。让我知道这里是否还需要任何其他澄清,干杯。 好的,谢谢,我现在检查一下 先生,现在它正在工作......先生,我能知道将来添加新规则是否会出现问题吗? 对不起,先生,您必须花更多时间帮助我。非常感谢您的支持。

以上是关于RewriteRules 不加载某些 css。 js和图片的主要内容,如果未能解决你的问题,请参考以下文章

spring boot css 和 js 资源在某些情况下不加载

在不使用 .htaccess 文件的情况下,我应该将 RewriteRules 放在 Apache2 的哪里?

HTACCESS RewriteRules 带有漂亮的 SEO 网址(不允许访问物理文件位置)

htaccess - RewriteRules 声明导致 404 错误

ExpressJs 不在某些路由上加载 CSS

在 Apache/PHP 中显示所有活动的 RewriteRules