XenForo currently makes use of URLs relative to forum root. All internal links are automatically build like this by the software:
and so on.
To instruct the browsers to load everything correctly, the following code is always served by XenForo in HTML header:
However there are several problems with browsers that do not understand that correctly and don't load some files, leading to several problems for our users. This happens mostly with Internet Explorer, but also occasionally with Firefox and Chrome. Users cannot post (if js files are missing), see odd design (if css files are missing) or broken picture links.
There are several posts here, describing such problems. They are hard to debug, because no one knows why and when a browser decides to misinterpret the base URL and it can change at every single load of a forum page.
Since we have activated our web server log to catch 404 errors we regularly get such messages:
showing clearly how browsers ignore the base tag.
My question is: What needs to be changed in XF code to accomplish that xf builds all relative URLs as absolute URLs?
Also, you may consider changing that behavior in a future version of XF once development will continue.
Thanks for hints and tips.
HTML:
<img src="styles/default/xenforo/someimage.png" />
<link rel="stylesheet" href="css.php" />
<script src="js/xenforo/xenforo.js">
To instruct the browsers to load everything correctly, the following code is always served by XenForo in HTML header:
HTML:
<base href="http://domain.com/xenforo/" />
<script>
var _b = document.getElementsByTagName('base')[0], _bH = "http://domain.com/xenforo/";
if (_b && _b.href != _bH) _b.href = _bH;
</script>
However there are several problems with browsers that do not understand that correctly and don't load some files, leading to several problems for our users. This happens mostly with Internet Explorer, but also occasionally with Firefox and Chrome. Users cannot post (if js files are missing), see odd design (if css files are missing) or broken picture links.
There are several posts here, describing such problems. They are hard to debug, because no one knows why and when a browser decides to misinterpret the base URL and it can change at every single load of a forum page.
Since we have activated our web server log to catch 404 errors we regularly get such messages:
Code:
2012/12/31 09:39:12 [error] 34319#0: *5865759 open() "/var/www/domain.com/threads/warum-ist-das-so.785290/styles/default/xenforo/clear.png" failed (2: No such file or directory), client: 90.152.175.249, server: domain.com, request: "GET /threads/warum-ist-das-so.785290/styles/default/xenforo/clear.png HTTP/1.1", host: "domain.com", referrer: "http://domain.com/threads/warum-ist-das-so.785290/"
2012/12/31 09:42:20 [error] 34318#0: *5867982 open() "/var/www/domain.com/conversations/segen.697/styles/default/xenforo/clear.png" failed (2: No such file or directory), client: 90.152.175.249, server: domain.com, request: "GET /conversations/segen.697/styles/default/xenforo/clear.png HTTP/1.1", host: "domain.com", referrer: "http://domain.com/conversations/segen.697/page-3"
2012/12/31 09:43:31 [error] 34322#0: *5868704 open() "/var/www/domain.com/threads/maeuseplage.784632/styles/default/xenforo/avatars/avatar_female_m.png" failed (2: No such file or directory), client: 194.166.216.250, server: domain.com, request: "GET /threads/maeuseplage.784632/styles/default/xenforo/avatars/avatar_female_m.png HTTP/1.1", host: "domain.com", referrer: "http://domain.com/threads/maeuseplage.784632/"
2012/12/31 09:46:48 [error] 34320#0: *5870770 open() "/var/www/domain.com/threads/tindra-duftkerze-ikea.784386/styles/default/xenforo/avatars/avatar_female_m.png" failed (2: No such file or directory), client: 194.166.216.250, server: domain.com, request: "GET /threads/tindra-duftkerze-ikea.784386/styles/default/xenforo/avatars/avatar_female_m.png HTTP/1.1", host: "domain.com", referrer: "http://domain.com/threads/tindra-duftkerze-ikea.784386/"
2012/12/31 09:46:48 [error] 34320#0: *5870772 open() "/var/www/domain.com/threads/tindra-duftkerze-ikea.784386/styles/default/xenforo/avatars/avatar_female_m.png" failed (2: No such file or directory), client: 194.166.216.250, server: domain.com, request: "GET /threads/tindra-duftkerze-ikea.784386/styles/default/xenforo/avatars/avatar_female_m.png HTTP/1.1", host: "domain.com", referrer: "http://domain.com/threads/tindra-duftkerze-ikea.784386/"
2012/12/31 09:46:58 [error] 34320#0: *5870773 open() "/var/www/domain.com/threads/wie-gut-trocknen-eure-geschirrspueler.784727/styles/default/xenforo/avatars/avatar_female_m.png" failed (2: No such file or directory), client: 194.166.216.250, server: domain.com, request: "GET /threads/wie-gut-trocknen-eure-geschirrspueler.784727/styles/default/xenforo/avatars/avatar_female_m.png HTTP/1.1", host: "domain.com", referrer: "http://domain.com/threads/wie-gut-trocknen-eure-geschirrspueler.784727/"
2012/12/31 09:54:34 [error] 34322#0: *5875208 open() "/var/www/domain.com/threads/brechdurchfall-2012.784981/styles/default/xenforo/avatars/avatar_female_m.png" failed (2: No such file or directory), client: 194.166.216.250, server: domain.com, request: "GET /threads/brechdurchfall-2012.784981/styles/default/xenforo/avatars/avatar_female_m.png HTTP/1.1", host: "domain.com", referrer: "http://domain.com/threads/brechdurchfall-2012.784981/"
2012/12/31 09:54:47 [error] 34322#0: *5875220 open() "/var/www/domain.com/threads/reizdarm.784296/styles/default/xenforo/avatars/avatar_female_m.png" failed (2: No such file or directory), client: 194.166.216.250, server: domain.com, request: "GET /threads/reizdarm.784296/styles/default/xenforo/avatars/avatar_female_m.png HTTP/1.1", host: "domain.com", referrer: "http://domain.com/threads/reizdarm.784296/"
showing clearly how browsers ignore the base tag.
My question is: What needs to be changed in XF code to accomplish that xf builds all relative URLs as absolute URLs?
Also, you may consider changing that behavior in a future version of XF once development will continue.
Thanks for hints and tips.