apache - 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
这就是我加载JS
和CSS
文件的方式:
/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>
标签之间添加。但两者都不适合我。
希望有人可以帮助我解决这个问题。
解决方案
使用您显示的示例/尝试,请尝试遵循 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>
推荐阅读
- html - (HTML CSS) 代码示例 div 弄乱了我的页面
- python - 在 scikit-learn 中实现词袋
- ffmpeg - 什么 ffmpeg 命令行会列出关键帧?
- vue.js - 运行构建后 Vue CLI 中缺少 .env
- python - 如何在使用有限内存的集合中使用大量变量?
- node.js - 如何在节点 js mongoose 聚合中一起使用 $count 和 $project
- javascript - 在 if 语句上访问数组
- ssl - What are the supported cipher suites in sim800c?
- java - 我如何使用 TextView 修复 AsyncTask 错误
- javascript - 重定向到新页面时代码未执行