.htaccess 目录的htaccess重写规则正在以不希望的方式更改url

.htaccess 目录的htaccess重写规则正在以不希望的方式更改url,.htaccess,mod-rewrite,redirect,.htaccess,Mod Rewrite,Redirect,编辑 在下面Seth的评论之后,我转到一个有用的apache页面,我发现VirtualHosts是解决以下问题的方法。 /编辑 --原创帖子-- 首先,介绍一下文件设置的背景知识。我运行的LAMP服务器承载多个域。我在这台服务器上的web根目录下的不同目录下有临时站点和实时站点 例子 /webroot/live/site1/[公共文件] /webroot/live/site2/[公共文件] /webroot/stage/site1/[公共文件] /webroot/stage/site2/[公共文

编辑
在下面Seth的评论之后,我转到一个有用的apache页面,我发现VirtualHosts是解决以下问题的方法。
/编辑

--原创帖子--
首先,介绍一下文件设置的背景知识。我运行的LAMP服务器承载多个域。我在这台服务器上的web根目录下的不同目录下有临时站点和实时站点

例子 /webroot/live/site1/[公共文件] /webroot/live/site2/[公共文件]

/webroot/stage/site1/[公共文件] /webroot/stage/site2/[公共文件]

其中每一个的域都转到服务器的IP,该IP指向webroot目录。我在那里有一个.htaccess文件,可以基于http_主机加载适当的内容

例子

RewriteCond %{HTTP_HOST} ^www.site1-live.com [NC]
RewriteRule ^(.*)$ /live/site1/$1 [PT,L,QSA]

RewriteCond %{HTTP_HOST} ^www.site1-stage.com [NC]
RewriteRule ^(.*)$ /stage/site1/$1 [PT,L,QSA]
这些功能非常适合访问主页和任何内部页面,即使特定页面类似于site1-live.com/view/123。每个站点的htaccess都会处理这些问题

我的问题(很抱歉花了这么长时间才到达这里):

当我指向站点中的任何子目录(如www.site1-live.com/rss)时,内容加载正常,但URL更改为如下内容

http://www.site1-live.com/live/site1/rss/
基本上显示了从webroot到文件的路径

我怎样才能避免这种情况?我显然希望url保持为www.site1-live.com/rss。我是否需要rss目录中的htaccess文件以某种方式阻止此操作

提前谢谢

将^www替换为^(.*)

然后将整个url放在第二行www.yourdomain.com/live/…

Doug

你为什么需要QSA标志

不管怎样,现在发生在您身上的是mod_index(或为您提供目录的任何内容)正在将您的www.site1-live.com/rss(不带结尾/)重定向到具有结尾/(ending/)的等效URL


如果您没有使用mod_别名或重写URL上的其他列表,那么删除PT应该可以像您预期的那样工作。

这到底是如何解决他的问题的?误读您的帖子。您根本不应该为此使用htaccess。您应该配置虚拟主机。你需要怎么做的指导吗?我听说了。。。我想调查他们。。。是的,赛斯,那会很有帮助的事实上是的,很好。经过指导,事情都很顺利。谢谢赛斯!所以它只在访问文件夹时显示根url,而不是文件或页面?对,如果我访问www.site1-live.com/somepage.php,它将保持不变。不过,我认为赛斯推荐的虚拟主机可能是正确的途径。我将研究那些.QSA保留附加到uri的查询字符串,据我所知,这与此无关。我希望他在使用[R]标记时描述的行为……是的,我也希望他在[R]中这样做,但他明确表示他在使用[PT],另一方面,如果他没有使用Mod_别名或类似的东西,他无论如何都不需要PT。你可能是对的。不确定这是否能解决问题,但值得一试。