.htaccess htaccess重写中断相对路径
我有一个HTTAccess文件,它映射了问题是,你没有考虑相对URL是在URI的基础上解决的,URI是引用中使用的HTML文档的URI。因此,在URI路径为.htaccess htaccess重写中断相对路径,.htaccess,mod-rewrite,url-rewriting,.htaccess,Mod Rewrite,Url Rewriting,我有一个HTTAccess文件,它映射了问题是,你没有考虑相对URL是在URI的基础上解决的,URI是引用中使用的HTML文档的URI。因此,在URI路径为/home/的HTML文档中,像资产/images/这样的相对URI路径被解析为/home/assets/images/,而不是/assets/images/ http://www.myserver.com/home/ 您不能使用mod_rewrite来更改这一点,因为URI解析是由客户端而不是服务器完成的。唯一的解决办法是: 使用更改基本
/home/
的HTML文档中,像资产/images/
这样的相对URI路径被解析为/home/assets/images/
,而不是/assets/images/
http://www.myserver.com/home/
您不能使用mod_rewrite来更改这一点,因为URI解析是由客户端而不是服务器完成的。唯一的解决办法是:
- 使用更改基本URI(请注意,这会影响所有相对URI)李>
- 使用绝对URI路径,例如
而不是相对/assets/images/
李>assets/images/
- 调整相对URI路径,以便将
中的引用调整为/home/
以反映路径深度。/assets/images/
添加到
标签内的页面中,如下所示:
<head>
<title>Your site title</title>
<BASE href="http://www.yoursitename.com/">
....
</head>
你的网站标题
....
我试图不必走将所有相对路径转换为绝对路径的道路,但唉,我现在可能不得不这么做。再一次,我完全忘记了基本标签!这很有魅力。谢谢Gumbo,非常感谢。@irot:再次注意,使用base
更改基URI会影响所有相对URI,而不仅仅是那些具有相对路径的URI。它还会影响带有哈希的锚标记。任何带有href属性(如“#content”)的锚定标记都将解析为基本URL,而不是当前页面。+1所有这些都是新的,我想知道为什么会发生这种情况。这适用于站点根目录中的文件,一个简单的
修复了资产问题。仅供参考,绝对路径是相对于apache中为主机设置的DocumentRoot
http://www.myserver.com/assets/images/
http://www.myserver.com/assets/css/
http://www.myserver.com/home/assets/images/
http://www.myserver.com/home/assets/images/
http://www.myserver.com/assets/images/
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([^/]+)/assets/(css|images|js)/(.*)$ /assets/$2/$3 [NC,L]
RewriteRule ^([^/]+)/$ /index.php?section=$1 [NC,L]
<head>
<title>Your site title</title>
<BASE href="http://www.yoursitename.com/">
....
</head>