.htaccess 将子域重写为动态 URL


.htaccess rewrite subdomain to dynamic url

我正在使用htaccess mod-rewrite将子域URL重写为动态URL,例如:subdomain.example.com/shop 被重写以读取 example.com/shop/?page=subdomain

以下代码工作正常:

RewriteEngine On
RewriteCond %{HTTP_HOST} (.*)'.example'.com [NC]
RewriteRule ^(.*)$ http://example'.com/$1/?page=%1 [L,P]

但问题是,如果我们访问:subdomain.example.com(url末尾没有"shop"),它会显示一个404错误页面,因为它将URL读取为:example.com//page=subdomain 双斜杠"//",因为"$1"为空。

无论如何,我们可以将"$1"放在一个条件下,如果它是空的,那么它旁边的斜杠"/"也会被删除,以便 url 应该被读作 example.com/page=subdomain,在"page"参数之前只有一个斜杠?

如果有任何htaccess专家可以帮助我,非常感谢。

谢谢!

当然,只需为"那里什么都没有"的情况明确添加一个单独的规则:

RewriteCond %{HTTP_HOST} (.*)'.example'.com [NC]
RewriteRule ^$ http://example'.com/?whatever [L,P]