mod_rewrite编写本地路由

时间:2012-03-08 00:11:18

标签: apache mod-rewrite

您知道,我想将[R]从http://www.domain.com/dir1/重定向到http://www.domain.com/

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

所以这些是我的规则:

RewriteRule dir1/([0-9]+) dir1.php?query=$1 [L]
RewriteRule dir1/(.+) $1 [L]
RewriteRule dir1/ . [R,L]

最后一个问题(我尝试了很多变种)是重定向到http://www.domain.com/home/domain/www/。我的意思是,插入本地目录。我只是希望它重定向到http://www.domain.com/

谢谢,

1 个答案:

答案 0 :(得分:1)

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

RewriteRule dir1/ /  [R,L]

错误在于使用.而不是/

这直接来自RewriteRule示例:

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,因为我们不需要本地部分。

您还可以使用绝对网址重定向。这对于将http请求重定向到https或转到其他网站非常有用。您可以像这样重定向到同一服务器:

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

但这是不必要的复杂。