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

时间:2013-12-04 07:11:25

标签: php apache .htaccess mod-rewrite redirect

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

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

这应该使用 Apache mod_rewrite。

来完成

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

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

以下是我希望它如何运作。

  

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

user1.mysite.com转到app目录并查询字符串以追加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

1 个答案:

答案 0 :(得分:0)

如果您不想使用mod_proxy,则需要将所有通配符子域指向与主域相同的文档根目录。您可以在ServerAlias *.mysite.com的vhost设置中使用www.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]