您知道,我想将[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/
谢谢,
答案 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]
但这是不必要的复杂。