首先:如果单独执行,PHP的virtual()以及Apache的mod_negotiation工作正常。 但是当virtual()引用需要协商的文件(例如Multi-Lang)时,我遇到了麻烦。 用一个简单的例子说明最简单:
在/texts/我放置两个文件: example.html (内容: <P>This is English</P> )和example.html.de ( <P>Dies ist Deutsch</P> )。 现在我们来看一个PHP脚本的例子:
<HTML><HEAD><TITLE>Example</TITLE></HEAD><BODY> <? virtual("/texts/example.html"); ?> </BODY></HTML>
这工作正常,输出如预期:
<HTML><HEAD><TITLE>Example</TITLE></HEAD><BODY> <P>This is English</P> </BODY></HTML>
但是现在我将virtual()调用改为virtual("/texts/example"); ,我的首选语言设置为德语。 虽然谈判select了正确的目标,但是输出却是混乱的:
<P>Dies ist Deutsch</P> <HTML><HEAD><TITLE>Example</TITLE></HEAD><BODY> </BODY></HTML>
同样:在上面的代码中唯一改变的是virtual()调用的参数。 这些文件在我的其他机器上运行了大约10年,只是在我的新机器上开始了这个疯狂的东西:
PHP版本:5.3.10(在工作机器上:5.2.4)
Apache2版本:2.2.22(在工作机器上:2.2.8)
任何想法在这里可能会出错?