.htaccess不包括重写css和图像


.htaccess excluding rewrite css and images

我在重写URL-时遇到一些问题

我的.htaces文件:

RewriteEngine On
RewriteBase /bsc/
RewriteRule ^(.+/?)$ index.php?url=$1 [NC,QSA,L]

我的文件和文件夹结构:

bsc/
---|.htaccess
---|index.php
---|css/
-------|style.css
---|images/
----------|logo.png
----------|image1.jpg
----------|image2.jpg
---|controller/
--------------|bootstrap.php
...

当我有下一个链接

localhost/bsc/page.html

比我的css工作或者我可以开始工作。但当我有下一个链接时:

localhost/bsc/page/subpage.html
localhost/bsc/page/subpage/subsubpage.html
localhost/bsc/page/subpage/subsubpage/subsubsubpage.html

我无法让css工作,css被重定向到

localhost/bsc/page/css/style.css
localhost/bsc/page/subpage/css/style.css
localhost/bsc/page/subpage/subsubpage/css/style.css

问题的第二部分是,我的链接并没有相同的扩展或任何扩展。接下来的情况是可能的:

localhost/bsc/page/subpage
localhost/bsc/page/subpage/
localhost/bsc/page/subpage.php
localhost/bsc/page/subpage.html
localhost/bsc/page/subpage/subsubpage
localhost/bsc/page/subpage/subsubpage/
localhost/bsc/page/subpage/subsubpage.php
localhost/bsc/page/subpage/subsubpage.html
...

现在定义的重写规则适用于不同的链接,但如何为css和图像添加排除规则?


我得到了下一个.htaccess,它适用于所有我的条件下的css:

RewriteEngine On
RewriteBase /bsc/
RewriteCond %{REQUEST_FILENAME} !'.css
RewriteRule ^(.+/?)$ index.php?url=$1 [NC,QSA,L]

在阅读了评论和一段时间后,我得到了下一个.htaccess文件,结果还不错:

RewriteEngine On
RewriteBase /bsc/
RewriteRule ^(.+/?)?(/|'.htm|'.php|'.html|/[^.]*)$ index.php?url=$1 [NC,QSA,L]

我的链接标签是:

<link rel="stylesheet" type="text/css" href="/bsc/css/style.css" />

现在,当我不能得到正确的URL请求时,这只是URL中的一个条件。下一个URL不接收最后一个参数:

localhost/bsc/page/subpage
localhost/bsc/page/subpage/subsubpage

我没有收到子页面分页面

是否可以添加缺失的条件,或者是否可以制定一些最简单的重写规则或更多规则

您可能只需要为css、使用一个绝对url

<link rel="stylesheet" type="text/css" href="/css/style.css">

而不是

<link rel="stylesheet" type="text/css" href="css/style.css">

在前面加一个斜杠会迫使它指向url的"根",从而使它在整个子页面中保持一致。

我将url重写应用于corephp中的一个项目。我也面临同样的问题。css、Js和图像未加载。我用过这个,它对我有用。来源

# Allow any files or directories that exist to be displayed directly
RewriteCond ${REQUEST_URI} ^.+$
RewriteCond %{REQUEST_FILENAME} '.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf|xml)$ [OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^ - [L]
  1. 在重写之前添加条件RewriteCond %{REQUEST_FILENAME} !-f
  2. 您应该包括带有src="/css/style.css"和NOT src="css/style.css"的css(注意缺少起始/