我在重写 URL-s 时遇到了一些问题
我的 .htacces 文件:
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,它适用于我所有的条件:
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
我没有收到subpage 或subsubpage,其他条件正常。在这种情况下,apache 和 .htaccess 托盘用于查找文件或文件夹....
是否可以添加缺失条件,或者是否可以制定一些最简单的重写规则或更多规则
最佳答案
你可能只需要为你的 css 使用一个绝对 url,
即
<link rel="stylesheet" type="text/css" href="/css/style.css">
代替
<link rel="stylesheet" type="text/css" href="css/style.css">
将斜杠放在前面会强制它位于 url 的“根”,从而使其在整个子页面中保持一致。
关于php - .htaccess 不包括重写 css 和图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8864821/