.htaccess重写通配符subsubdomain和params

时间:2012-07-19 20:13:50

标签: apache .htaccess mod-rewrite rewrite subdomain

我正在尝试编写一个mod_rewrite来像这样工作

  • wildcard.subdomain.domain.com => subdomain.domain.com/data.php?q=wildcard
  • wildcard.subdomain.domain.com/?repeat=1 => subdomain.domain.com/data.php?q=wildcard&repeat=1
  • subdomain.domain.com => data.php
  • www.subdomain.domain.com => data.php

到目前为止,我在.htaccess

中做了什么
<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^([^.]+)\.abc\.def\.com\.br$ [NC]
  RewriteCond %1 !^(www)$ [NC]
  RewriteRule ^.*$ data.php?q=%1 
</IfModule>`

3 个答案:

答案 0 :(得分:1)

重复使用参数

RewriteRule ^.*$ data.php?q=%1&%{QUERY_STRING}

答案 1 :(得分:1)

试试这些:

  # This should cover the first 2 cases
  RewriteCond %{HTTP_HOST} ^([^.]+)\.abc\.def\.com\.br$ [NC]
  RewriteCond %1 !^(www)$ [NC]
  RewriteRule ^$ /data.php?q=%1&%{QUERY_STRING} [L,QSA]

  # This should cover the last 2
  RewriteCond %{HTTP_HOST} ^([^.]+)\.abc\.def\.com\.br$ [NC]
  RewriteCond %1 ^(www)$ [NC]
  RewriteRule ^$ /data.php?%{QUERY_STRING} [L,QSA]

请注意,在请求为的情况下,这不会执行任何操作:wildcard.subdomain.domain.com/some/path/to/file.html这些匹配请求URI是/

答案 2 :(得分:0)

如果您使用的是cpanel,则可以创建*子域(* .domain.com)并将其连接到目录,然后在该目录中创建index.php:

<?php
echo "<pre>";
print_r($_SERVER);
echo "</pre>";
?>

测试结果,您可以从服务器名称或服务器主机

导出子域名