在Apache中重写URL,同时保留查询字符串并转发到子文件夹


Rewrite URL in Apache while retaining query string and forwarding to subfolder

这是我第一次发帖,非常感谢大家的帮助。

我想将子域重定向到文件夹,并将其重写为查询字符串(内部-不更改浏览器地址),同时保留查询字符串的余额(如果有的话)。

这应该使用Apache mod_rewrite来完成

它还应该排除基本域和www扩展名(因为它指向根目录)。

我已经完成了从DNS(通配符设置)和vhosts所需的一切,并且不想要mod_proxy方法

这正是我想要的工作方式。

www.mysite.com到根目录mysite.com到根目录

user1.mysite.com转到应用程序目录并查询字符串以附加user=user1(不更改浏览器地址)

例如

user1.mysite.com should resolve (internally) to mysite.com/myApp/index.php?user=user1
user2.mysite.com should resolve (internally) to mysite.com/myApp/index.php?user=user2
user1.mysite.com/mypage.php should resolve (internally) to mysite.com/myApp/mypage.php?user=user1
user1.mysite.com/mypage.php?myval=whateverval should resolve (internally) to mysite.com/myApp/mypage.php?user=user1&?myval=whateverval

我现有的代码如下,但不能隐式工作(浏览器地址栏更改)。有人能帮帮我吗?

谢谢,Sheran

如果您不想使用mod_proxy,您需要将所有通配符子域指向与主域相同的文档根。您可以在www.mysite.com的vhost设置中使用ServerAlias *.mysite.com来完成此操作。然后在文档根目录中的htaccess文件中:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www'. [NC]
RewriteCond %{HTTP_HOST} ^(.+)'.mysite'.com$ [NC]
RewriteRule ^(mypage'.php)?$ /myApp/index.php?user=%1 [L,QSA]