在Javascript / PHP中处理绝对URL的正确方法?

时间:2014-10-01 13:05:06

标签: javascript php jquery html url-rewriting

好的,所以我有一些Javascript与URL重写一起运行;所以,如果我使用相对网址,它会从错误的地方加载内容。

e.g。我在myfunctions.js中有这个功能:

function loadXMLDoc(url,cfunc) {...

如果我从test.com/a/b/c传递相对网址,则会加载相对于test.com/a/b/c而不是test.com的内容。

我显然可以使用绝对URL来解决这个问题,但我需要这个才能在测试服务器和实时服务器上工作。

PHP当前我使用函数获取基本URL并将其替换为绝对URL。

所以在PHP中我有:

//On the test server I run:
define('BASE_URL', 'http://localhost/location/to/www/root');

//And on the live server I run:
define('BASE_URL', 'http://www.test.com/');

然后我在我的PHP中使用它来绝对加载图像,css等;这允许我在测试服务器和实时服务器上使用相同的代码。

我的问题是;这里有什么正确的解决方案?我应该使用类似于我的PHP的Javascript函数来构成绝对URL吗?或者将这个PHP定义传递给.js文件是否可能/一个好主意?

甚至可能有一个重写标志告诉浏览器忽略url中的相对位置,只是从根www位置加载;但是我找不到任何东西。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

只需在您的公共文件(header.php)中定义: -

<script> var baseUrl = '<?php echo BASE_URL;?>';</script>

并将所有js包含在此代码下方并访问此var以供使用。

答案 1 :(得分:2)

包含标签后,请使用以下内容。但请记住,您无法在外部

中使用该变量
<script> 
    var siteBaseURL = '<?php echo BASE_URL;?>';
</script>

因为,PHP将ECHO任何服务器端值并将其作为HTML发送,因此PHP将发送BASE_URL,这样的HTML with JavaSCRIPT将包含在浏览器中。

但是在任何外部JS文件中,比如说

 <script src="example.js"/>  Here you wont be able to access the above variable.

答案 2 :(得分:0)

每当我在test vs live上开发时,我只使用“/css/location/cssfile.css”(这适用于任何文件),这样我就不必修改任何内容。

然后当我的HTML加载时,它将从正确的位置调用。以上翻译成:

http://localhost/location/to/www/root/css/location/cssfile.css

http://test.com/css/location/cssfile.css

这适用于50个网站:

/css/location/file.name

适用于:

http://localhost/location/to/www/root
http://localhost/location/to/www/testsite1
http://localhost/location/to/www/testsite2
http://localhost/location/to/www/testsite3