通配符.htaccess将subdomian重写为子目录,子域为GET变量

时间:2016-08-02 07:09:04

标签: apache .htaccess mod-rewrite url-rewriting

示例网址:

http://username1.example.com/inventory/
http://username2.example.com/profile/about
http://example.com/products/category/

重写为:

http://example.com/subdomains/inventory/?user=username1
http://example.com/subdomains/profile/about?user=username2
http://example.com/products/category/

我想我已经搜索了大部分互联网。

如何通过添加"子域"来重写路径?域后面的文件夹,并将子域作为GET变量传递给PHP访问它?用户可以在此地址栏中看到的网址不应有任何更改。 当没有子域时,不应该有任何改变或重写。

现在,我可以将路径和子域都视为GET变量,如下所示,但这不是我想要的。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^((?!www\.)[^.]+)\.example\.com$
RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteCond %{REQUEST_URI} !^.*\.(jpg|css|js|gif|png)$ [NC]
RewriteRule ^(.*)$ /index.php?subdomain=%1&request=$1 [L]
</IfModule>

请考虑我是.htaccess noob。

1 个答案:

答案 0 :(得分:0)

试试这个(如果你已经有其他一些重写规则,请将它们放在最上面):

RewriteCond %{HTTP_HOST} ^((?!www\.)[^.]+)\.example\.com$
RewriteRule ^ http://example.com/subdomains%{REQUEST_URI}?user=%1 [QSA,L,P]