Apache mod_重写写入本地路由

Apache mod_重写写入本地路由,apache,mod-rewrite,Apache,Mod Rewrite,你看,我想把[R]从重定向到 我也要接受http://www.domain.com/dir1/([0-9]+)和[L]对dir1.php的请求?query=$1。和[我]所有人)到根 这就是我的规则: RewriteRule dir1/([0-9]+) dir1.php?query=$1 [L] RewriteRule dir1/(.+) $1 [L] RewriteRule dir1/ . [R,L] 最后一个问题(我尝试了它的许多变体)是重定向到。我的意思是,这会插入本地目录。我只想把它重

你看,我想把[R]从重定向到

我也要接受http://www.domain.com/dir1/([0-9]+)和[L]对dir1.php的请求?query=$1。和[我]所有人)到根

这就是我的规则:

RewriteRule dir1/([0-9]+) dir1.php?query=$1 [L]
RewriteRule dir1/(.+) $1 [L]
RewriteRule dir1/ . [R,L]
最后一个问题(我尝试了它的许多变体)是重定向到。我的意思是,这会插入本地目录。我只想把它重定向到


谢谢,

使用带斜杠的路径将客户端重定向到某个绝对路径

RewriteRule dir1/ /  [R,L]
错误在于使用
而不是
/

这直接来自重写规则示例:

Inside per-directory configuration for /somepath
(/physical/path/to/somepath/.htacccess, with RewriteBase /somepath)
for request ``GET /somepath/localpath/pathinfo'':

Given Rule                                      Resulting Substitution
----------------------------------------------  ----------------------------------

[... snip ...]

^localpath(.*) /otherpath$1                     /otherpath/pathinfo
在我们的例子中,
/otherpath
只是
/
,我们不使用
$1
,因为我们不需要本地部分

您还可以使用绝对URL重定向。这对于将http请求重定向到https或转到其他网站非常有用。您可以重定向到相同的服务器,如下所示:

RewriteRule dir1/ http://%{HTTP_HOST}/  [R,L]

但是这是不必要的复杂。

这些是httpd.conf中的顶级吗?不,它们在/home/domain/www/.htaccess中。我想我要问的是如何强制mod_rewrite执行基于URI的替换。(避免使用本地路径)((啊,我刚注意到我的Web服务器上已经打开了重写日志,从1月份开始…!)要重定向,请尝试在右侧放置完整的URL。http://etcThanks,这是件好事。但有两个问题:1)如果我想保留协议(即https),以及2)如果我只想重定向到父文件夹,而不一定是根文件夹,该怎么办?意思是->和->(假设app.domain.com的DocumentRoot位于/home/domain/www/app/)Re(1):有一个https变量,其中包含字符串“on”如果连接是SSL。最直接的使用方法是将规则分成两部分,其中重写条件基于包含“on”和不包含“on”的HTTPS,每个重写条件分别指向HTTPS或http。Re(2):我看不到简单的方法,因为左侧模式匹配仅适用于本地部分,要实现一级重定向,需要在上面的前缀内进行匹配。因此,在没有左侧模式匹配帮助的情况下执行此操作意味着必须在右侧执行字符串操作。看看地图。使用RewriteMap,您可以让一个外部程序(sed、perl等)进行过滤。它不是每次重写都启动的,只是一次,并用作一个协进程。伙计,每次我进入
mod_rewrite
时都是这样的。我可以向你保证,下一次当我需要自找麻烦时,在接下来的六个月、12个月或18个月里,我会忘记一切,必须重新学习。