1

出于某种原因,我真的无法让我的 .htaccess RewriteRule 工作。我尝试了很多事情并进行了谷歌搜索,但失败了。一个可能的原因可能是我有一个相当旧的 Apache 版本(但这是我无法控制的)。不确定如何检索版本,但 phpinfo() 向我显示“Apache API 版本 20051115”。它至少必须在台式机、黑莓和 iPad 上工作。

我想重写这个:http://subdomain.domain.com/folder1/?id=1234 到以下:http://othersubdomain.domain.com/?id=1234 其中 id 可以是任何数字(我重写任何参数都很好,我也可以重定向到/folder1/?id=1234,重要的部分是子域和参数仍然存在的事实)。重要的是我没有收到身份验证弹出窗口(在任何设备上)。

我尝试了以下方法:

AuthUserFile /home/user/path/to/.htpasswd
AuthGroupFile /dev/null
AuthName "This site requires a valid username and password"
AuthType Basic

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^folder1.*$ http://othersubdomain.domain.com%{REQUEST_URI}? [redirect=301,last]

<limit GET POST>
require valid-user
</limit>

现在似乎在我的机器上正确重定向的唯一东西是 subdomain.domain.com/folder1/ (没有最后一个 / 它不起作用,或者如果我在末尾添加参数,即 .../folder1/? id=1234 它也不起作用)。

我进一步尝试了以下内容:

AuthUserFile /home/user/path/to/.htpasswd
AuthGroupFile /dev/null
AuthName "This site requires a valid username and password"
AuthType Basic

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/folder1
RewriteRule .* http://othersubdomain.domain.com/?%{QUERY_STRING} [redirect=301,last]

<limit GET POST>
require valid-user
</limit>

此重定向似乎有效,但只有在我提供正确的身份验证用户/密码之后,这正是我想要阻止的。

提示非常受欢迎......

4

1 回答 1

1

我认为这应该有效(没有任何 RewriteCond):

RewriteRule ^folder1(.*)$ http://othersubdomain.domain.com$1 [L,QSA,R=301]

QSA 标志告诉保留查询参数。$1 替换为 ( ) 匹配的内容。

PS 据我所知,您只能在 RewriteCond 中使用 %{...} 变量。

于 2013-01-16T15:05:01.447 回答