我尝试通过将网站从一个主机复制到第二个不同的主机来创建开发服务器,但服务器似乎以不同的方式处理虚拟路径。
在主服务器上此方法有效:
<link href="/styles/styles.css" rel="stylesheet" type="text/css">
在开发服务器上,相同的路径需要写为(不带第一个斜杠):
<link href="styles/styles.css" rel="stylesheet" type="text/css">
如何让开发服务器与主服务器文件协同工作而无需重写路径?我可以从 .htaccess 使用 mod rewrite 来执行此操作吗?
答案1
首先,介绍一下路径的工作原理。绝对路径基于服务器根目录。相对路径基于当前页面的 URL(而非文件路径)。但是,此行为不是由服务器处理的——而是由客户端处理的,并且此行为是通用的(是的,甚至 IE6... 我知道,很惊讶!)。唯一会导致这两条路径不相同的情况是它们不相对于网站的根目录。
例如,如果我们尝试访问您上面提到的 URL (/styles/styles.css),它们在以下两个示例中的行为方式如下:
“主服务器”网站托管于http://主网站/index.html
styles/styles.css => http://mainwebsite/styles/styles.css
/styles/styles.css => http://mainwebsite/styles/styles.css
“开发服务器”网站托管于http://devsite/some_sub_dir/index.html
styles/styles.css => http://devsite/some_sub_dir/styles/styles.css
/styles/styles.css => http://devsite/styles/styles.css
如果您澄清您的答案(这些服务器显然没有以相同的方式托管相同的数据),我可以提供更准确的描述。但是,如果我不得不猜测,我会说您可能遇到了我描述的问题。
祝你好运!
安德鲁