【问题标题】:RewriteRules not load some of css. js and imagesRewriteRules 不加载某些 css。 js和图片
【发布时间】: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;。但这两种方法都不适合我。

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

【问题讨论】:

    标签: apache .htaccess mod-rewrite url-rewriting friendly-url


    【解决方案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,这些行确保仅当请求针对不存在的页面时才执行此规则,否则不会触摸/执行。让我知道这里是否还需要任何其他澄清,干杯。
    • 好的,谢谢,我现在检查一下
    • 先生,现在它正在工作......先生,我能知道将来添加新规则是否会出现问题吗?
    • 对不起,先生,您必须花更多时间帮助我。非常感谢您的支持。
    猜你喜欢
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 2012-02-21
    相关资源
    最近更新 更多