我有一个php文件,它根据给定的变量从db加载一篇文章。站点的根目录中还有一个.htacces文件。我在htaccess中使用了这个来重定向
重写规则 ^文章/([A-ZA-Z0-9 -_ \ S] +)。HTML $ ?模板/ index.php的动作= viewarticle&安培;别名= $ 1
重定向后,页面显示正常,但页面中的html出错,例如:
media/2011/02/21/logos.jpg
转入articles/media/2011/02/21/logos.jpg
这是因为htacces正在重定向。无论如何都要在保持根目录不变的情况下进行此重定向?
答案 0 :(得分:5)
这会发生,因为htacces正在重定向。
不,这是因为浏览器认为
example.com/articles/my_article.html
是/articles
子目录中的资源,并将所有相对网址视为相对于/articles
。
无法改变这种行为。
您需要开始使用绝对图像引用或考虑附加目录的相对图像引用:
<img src="/media/2011/02/21/logos.jpg"> <------ recommended
<img src="../media/2011/02/21/logos.jpg">
你也可以按照@Boris的建议使用<base>
,但在我看来,绝对路径(或完整的URL)是解决问题的一个非常清晰的解决方案。
答案 1 :(得分:1)
首先,你的意思是“页面中的html出错了”:
.htaccess不会更改代码中的任何内容。
有一个html元素,可让您定义页面中随处可用的基本网址。
<base href="/root" />
如果你有例如<a href="/articles/12">Article 12</a>
,那么当点击链接时,你将重定向到/ root / articles / 12
答案 2 :(得分:0)
另外,将Pekka的答案与Boris'混合,您应该在应用程序中的某个位置定义应用程序的根路径,并将所有路径输出为绝对路径,在前面定义的基础目录前面。
例如:在config.inc.php
中define("ROOT_URI", "http://myserver.com/myapp");
到处:
<img src="<?php echo ROOT_URI;?>/media/2011/02/21/logos.jpg
这就像使用Boris建议的base
元素一样,不使用它(我也不喜欢base
),并使您的应用程序能够在它存储的Web服务器下的任何文件夹中工作。 / p>