Html 重写规则包括斜杠不起作用的路径

Html 重写规则包括斜杠不起作用的路径,html,.htaccess,mod-rewrite,Html,.htaccess,Mod Rewrite,我有一个旧网站,我想升级它,让它使用搜索引擎的.htaccess重写规则,例如,假设我在.htaccess文件中有这个规则 RewriteRule ^category/electric category.php?type=8 这将不会有任何问题,但当页面加载时,不会出现任何图像,也不会应用css,在我在internet上进行搜索后,我发现这个问题,因为URL如下所示: http://www.mywebsite.com/category/electric <img src="/imag

我有一个旧网站,我想升级它,让它使用搜索引擎的.htaccess重写规则,例如,假设我在.htaccess文件中有这个规则

RewriteRule ^category/electric category.php?type=8
这将不会有任何问题,但当页面加载时,不会出现任何图像,也不会应用css,在我在internet上进行搜索后,我发现这个问题,因为URL如下所示:

http://www.mywebsite.com/category/electric 
<img src="/images/image.png" width="100" height="100" alt="" />
<base href="http://www.mywebsite.com/" />
我找到了解决方案,但应用它需要花费很多时间,我发现如果我在每个元素中放置完整的url,需要像JS、CSS、图像等路径。。。。。。文件一切都会像这样好的

<img src="images/image.png" width="100" height="100" alt="" />


但正如我所说,这需要时间,所以有没有办法用任何解决办法来解决这个问题


很抱歉英语不好

您可以尝试以下重写规则:

RewriteRule ^.*category/electric category.php?type=8

注意开头的额外“*”;这是一个通配符匹配,这意味着它应该允许任何URL,只要它以category/electric结尾…

您可以使用图像的完整URL路径,如下所示:

http://www.mywebsite.com/category/electric 
<img src="/images/image.png" width="100" height="100" alt="" />
<base href="http://www.mywebsite.com/" />
这将使页面上的所有相对URL都像位于
http://www.mywebsite.com/

不幸的是,这两种解决方案都需要编辑HTML。HTTP/1.1确实定义了一个类似HTML中的
标记的标签,但是浏览器对它的支持似乎是有限的。(例如,Mozilla似乎有,因为它会破坏太多的现有站点。)显然,HTTP规范的某些版本也有
内容库
头,但它也受到了很差的支持,而且是后来才出现的

当然,还有另一个选择是使
images/image.png
工作,即使前缀是
category/
。以下重写规则应该可以做到这一点:

RewriteRule ^category/images/(.*) images/$1  [L,R=permanent]
(内部重定向也应该起作用,但可能会导致浏览器两次请求图像,因为他们没有意识到它们是相同的。如果图像非常小,可能仍然更有效。)

将example.com/category/images/example.jpg重定向到example.com/images/example.jpg


这并不理想,因为它要求每个图像都有一个额外的http请求,但除了更改html之外没有其他方法。

这对OP有什么帮助?他们的问题是(或者至少看起来是)他们的重写规则regexp与前面的内容中的URL不匹配。因此,我的理论是,通过修改正则表达式使路径与前面的任何内容匹配,它将修复问题;我相信他们正在寻找的整个解决方案不需要所有这些(只需要修改.htaccess)。我能想到的唯一不需要编辑HTML的解决方案是在请求时重写图像URL。我在回答中添加了这一点,还提到了一个非解决方案(支持较差的
Content-Location
HTTP头)。因为所有的相对链接都可能断开。@Gerben:在这种情况下,OP已经断开了所有的相对链接。使用
可以解决这些问题。