Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mod_rewrite更改当前目录_Php_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Php mod_rewrite更改当前目录

Php mod_rewrite更改当前目录,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我有一个php文件,它根据给定的变量从数据库加载一篇文章。在站点的根目录中还有一个.htacces文件。我在htaccess中使用了这个来重定向 重写规则 ^articles/[a-zA-Z0-9-\s]+.html$ template/index.php?action=viewarticle&alias=1美元 重定向后,页面显示良好,但页面中的html出错,例如: media/2011/02/21/logos.jpg转到articles/media/2011/02/21/logos.jpg

我有一个php文件,它根据给定的变量从数据库加载一篇文章。在站点的根目录中还有一个.htacces文件。我在htaccess中使用了这个来重定向

重写规则 ^articles/[a-zA-Z0-9-\s]+.html$ template/index.php?action=viewarticle&alias=1美元

重定向后,页面显示良好,但页面中的html出错,例如:

media/2011/02/21/logos.jpg转到articles/media/2011/02/21/logos.jpg

这是因为htacces正在重定向。在保持根目录不变的情况下,是否仍然可以执行此重定向

这是因为htacces正在重定向

不,这是因为浏览器认为

example.com/articles/my_article.html
是/articles子目录中的资源,并将所有相对URL视为相对于/articles

没有办法改变这种行为

您需要开始使用绝对图像引用,或考虑附加目录:

的相对图像引用。
<img src="/media/2011/02/21/logos.jpg">      <------ recommended
<img src="../media/2011/02/21/logos.jpg">
您也可以按照@Boris的建议使用,但在我看来,绝对路径或完整URL是解决这个问题的一个非常干净的解决方案

这是因为htacces正在重定向

不,这是因为浏览器认为

example.com/articles/my_article.html
是/articles子目录中的资源,并将所有相对URL视为相对于/articles

没有办法改变这种行为

您需要开始使用绝对图像引用,或考虑附加目录:

的相对图像引用。
<img src="/media/2011/02/21/logos.jpg">      <------ recommended
<img src="../media/2011/02/21/logos.jpg">

您也可以按照@Boris的建议使用,但在我看来,绝对路径或完整URL是解决此问题的一个非常干净的解决方案。

首先,您所说的页面中的html出错是什么意思:

是状态栏中显示的链接吗? 是真的吗?如果是,您可能会使用一些视图帮助器来构造您的基本url 也许您在链接资源时没有使用/指定绝对路径,那么您的资源将相对链接到当前页面/文章/ .htaccess不更改代码中的任何内容

有一个html元素,允许您定义页面中任何地方使用的基本url

<base href="/root" />

例如,如果您有,那么当单击链接时,您将首先重定向到/root/articles/12

,页面中的html出错是什么意思:

是状态栏中显示的链接吗? 是真的吗?如果是,您可能会使用一些视图帮助器来构造您的基本url 也许您在链接资源时没有使用/指定绝对路径,那么您的资源将相对链接到当前页面/文章/ .htaccess不更改代码中的任何内容

有一个html元素,允许您定义页面中任何地方使用的基本url

<base href="/root" />

例如,如果您在单击链接时,您将重定向到/root/articles/12

,将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服务器下存储的任何文件夹中工作。

此外,将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服务器下存储的任何文件夹中工作。

尝试添加like RewriteBase/尝试添加like RewriteBase/不值得否决,这是一个完全可行的答案,虽然我个人不喜欢没有任何理由被否决的带有复仇心理的base,但我需要同意你的意见,Pekka,我也不推荐,而是使用绝对URI,但在某些情况下,对于ModX CMS,我不得不使用它,但需要小心使用。不值得否决,这是一个完全可行的答案,虽然我个人不喜欢没有任何理由就被否决的带有复仇心理的base,但我需要同意你的观点,Pekka,我也不推荐,而是使用绝对URI,但在某些情况下,对于ModX CMS,我不得不使用它,但需要小心使用。你自己也使用这种方法吗?想在这里发布一个链接吗?是的,我一直在使用它。链接到什么?我认为这背后的原因在我的回答中非常清楚。一个指向使用这种方法的网站的链接。你知道,很少有网站使用完整的URL作为本地链接。所以,我只是好奇。嗯,我不使用完整的URL作为本地链接,但是我想如果我这样做的话,这里会更清楚。我实际上
跳过这个部分。你可以在网站上看到这一点,你会看到一些http部分的链接,但这是因为相同的代码生成网页和发送给订阅者的新闻稿。我一直在使用相同的东西。究竟为什么有人要否决这一点?你自己也用这种方法吗?想在这里发布一个链接吗?是的,我一直在使用它。链接到什么?我认为这背后的原因在我的回答中非常清楚。一个指向使用这种方法的网站的链接。你知道,很少有网站使用完整的URL作为本地链接。所以,我只是好奇。嗯,我不使用完整的URL作为本地链接,但是我想如果我这样做的话,这里会更清楚。我实际上跳过了这个部分。你可以在网站上看到这一点,你会看到一些http部分的链接,但这是因为相同的代码生成网页和发送给订阅者的新闻稿。我一直在使用相同的东西。到底为什么有人要否决这一点?你是对的。但是我不想改变html,我无论如何也不能改变它,因为它是从数据库加载的,我不能编辑我做的事情是用户stru_replace在页面显示之前用../media/替换html中的所有媒体,它工作得非常好。谢谢大家的回答,你是对的。但是我不想改变html,我无论如何也不能改变它,因为它是从数据库加载的,我不能编辑我做的事情是用户stru_replace在页面显示之前用../media/替换html中的所有媒体,它工作得非常好。谢谢大家的回答。