Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php .htaccess将子域重写为动态url_Php_Apache_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

Php .htaccess将子域重写为动态url

Php .htaccess将子域重写为动态url,php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,我正在使用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] 但问题是,如果我

我正在使用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专家能帮助我


谢谢大家!

当然,只需为“nothing there”案例明确添加一条单独的规则:


感谢@VoteyDisciple,我添加了它,它与重定向(删除“P”标志)一起工作,但不与“P”标志一起工作以保持子域不重定向,它将子域重定向到主域。你对此有什么想法吗?
RewriteCond %{HTTP_HOST} (.*)\.example\.com [NC]
RewriteRule ^$ http://example\.com/?whatever [L,P]