RewriteRules 未加载某些 css。 js和图像
RewriteRules not load some of css. js and images
目前,当我使用 RewriteRules 重写我的 URL 时,我无法加载一些 css、js 和图像文件。
我的 .htaccess
的内容是:
<IfModule mod_rewrite.c>
RewriteEngine On
Options +FollowSymlinks
# Options +SymLinksIfOwnerMatch
RewriteBase /
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ news.php?newstype=&newsid=&newstitle= [L,QSA,NC,B]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ .php
# RewriteRule ^(css|js|img)/?$ / [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=&newsid=&newstitle= [L,QSA,NC,B]
,那么一切都很好。
我还尝试将相对路径更改为绝对路径,并在 <head>
</head>
标记之间添加 <base href="/">
。但是这两个都不适合我。
希望有人能帮我解决这个问题。
根据您显示的 samples/attempts,请尝试遵循 htaccess 规则文件。
请确保在测试您的网址之前清除您的浏览器缓存。
基本上我们需要将 news.php 的重写规则放在其他重写规则下。
同时确保禁用规则中的 MultiViews
功能以确保只找到准确的内容。
<IfModule mod_rewrite.c>
RewriteEngine On
Options +FollowSymlinks
Options -MultiViews
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/\.php -f [NC]
RewriteRule ^(.*)/?$ .php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ news.php?newstype=&newsid=&newstitle= [L,QSA,NC,B]
</IfModule>
目前,当我使用 RewriteRules 重写我的 URL 时,我无法加载一些 css、js 和图像文件。
我的 .htaccess
的内容是:
<IfModule mod_rewrite.c>
RewriteEngine On
Options +FollowSymlinks
# Options +SymLinksIfOwnerMatch
RewriteBase /
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ news.php?newstype=&newsid=&newstitle= [L,QSA,NC,B]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ .php
# RewriteRule ^(css|js|img)/?$ / [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=&newsid=&newstitle= [L,QSA,NC,B]
,那么一切都很好。
我还尝试将相对路径更改为绝对路径,并在 <head>
</head>
标记之间添加 <base href="/">
。但是这两个都不适合我。
希望有人能帮我解决这个问题。
根据您显示的 samples/attempts,请尝试遵循 htaccess 规则文件。
请确保在测试您的网址之前清除您的浏览器缓存。 基本上我们需要将 news.php 的重写规则放在其他重写规则下。
同时确保禁用规则中的 MultiViews
功能以确保只找到准确的内容。
<IfModule mod_rewrite.c>
RewriteEngine On
Options +FollowSymlinks
Options -MultiViews
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/\.php -f [NC]
RewriteRule ^(.*)/?$ .php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ news.php?newstype=&newsid=&newstitle= [L,QSA,NC,B]
</IfModule>