2016-03-18 92 views
0

我正在使用htaccess mod-rewrite将子域url重写为动态url,例如:subdomain.example.com/shop被重写为example.com/shop ?/页=子域名.htaccess将子域重写为动态url

下面的代码工作正常:

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

但问题是,如果我们访问:subdomain.example.com(不带“店”在URL的末尾),它显示一个404错误页面,因为它读取URL如:example.com//page=subdomain带双斜杠“//”,因为“$ 1”为空。

有没有办法,我们可以把“$ 1”放在一个条件下,如果它是空的,那么斜杠旁边的“/”将被删除,因此url应该被读为example.com/page=subdomain“页面”参数前只有一个斜线?

真的很感激,如果任何htaccess的专家可以帮助我。

谢谢!

回答

0

当然,只需添加一个单独的规则,明确了“什么都没有”的情况:

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

感谢@VoteyDisciple,我加了它,它的工作原理与重定向(删除了“P”标志),但与工作“P”标志保持子域不重定向,它将子域重定向到主域。你有什么想法吗? –