使用HTACCESS进行重定向,包括GET参数

我按原样定义了一个特定的.htaccess,以便将所有流量从根文件夹重新路由到子文件夹中的相同URL,但子域例外。

这是我的文件:

#RewriteEngine on 
#RewriteRule ^(.*)$ http://www.mydomain.fr/blog/$1 [R=301,QSA]
<IfModule mod_rewrite.c>

RewriteEngine On
RewriteCond %{HTTP_HOST} !^joe\.mydomain\.fr$ [NC]
RewriteCond %{HTTP_HOST} !^lab\.mydomain\.fr$ [NC]
RewriteCond %{REQUEST_URI} !^joe(.*)
RewriteCond %{REQUEST_URI} !^lab(.*)
RedirectMatch ^/$ http://www.mydomain.fr/blog/

</IfModule>

此文件完全符合我的要求:例如,当我输入类似www.mydomain.fr/wp-admin的内容时,它将重定向到www.mydomain.fr/blog/wp-admin,但将从中排除子域joe.mydomain.frlab.mydomain.fr重定向。

但是,发生的事情是,如果我转到joe.mydomain.fr?test=1,服务器将直接将我重定向到joe.mydomain.fr,但是GET参数消失了。

如何避免这种情况?

我尝试将[NC]替换为[QSA][R=301,QSA],但出现内部服务器错误。

谢谢。

underthesun2008 回答:使用HTACCESS进行重定向,包括GET参数

花了一天时间记录.htaccess文件的实际工作方式后,我终于能够解决以下问题,灵感来自Abhishek Gurjar的文件:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /s

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteCond %{HTTP_HOST} !^joe\.mydomain\.fr$ [NC]
RewriteCond %{HTTP_HOST} !^lab\.mydomain\.fr$ [NC]
RewriteCond %{HTTP_HOST} !^blog\.mydomain\.fr$ [NC]
RewriteCond %{REQUEST_URI} !/joe
RewriteCond %{REQUEST_URI} !/lab
RewriteRule ^(.*)$ http://www.mydomain.fr/blog/$1 [R=301]

</IfModule>

仅供参考,我的提供商1&1显然必须强制要求前三行...

我更改的是将REQUEST_URI从!^ joe(。*)!^ lab(。*)更改为!/ joe !/ lab ,然后也排除blog.mydomain.fr URL,以免有一天我使用它们时出现blog.mydomain.fr/joe或blog.mydomain.fr/lab问题

最后,我必须将1&1客户端界面中的子域重定向到Webspace的子文件夹,而不是将URL重定向为hard,这意味着:

现在,该配置使我可以输入URL,例如joe.mydomain.fr?dnt=1,同时重定向到http://www.mydomain.fr/joe?dnt=1,这正是我想要做的。

我希望这对其他人有帮助。 感谢您的帮助。

本文链接:https://www.f2er.com/3147382.html

大家都在问