htaccess子域名不能使用mod_rewrite enable

时间:2013-02-01 22:06:30

标签: .htaccess

我已经搜索了很多教程,对我没用。 我想创建带有htacces的虚拟子域,但是当我启用mod_rewrite时,我的软件会禁用原始URL。例如:

mod_rewrite disabled:
http://domain.com/listings.php?category=35

mod_rewrite enabled:
http://domain.com/35-finance/listings.html

启用后,我无法访问http://domain.com/listings.php?category=35 ...

在我的htacces中,如果禁用mod_rewrite,则可以:

RewriteCond %{HTTP_HOST} !www.domain.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-_]+).domain.com [NC]
RewriteRule (.*) listings.php?category=%2 [NC,QSA]

但是如果启用,它不起作用,它不理解'category'参数。

我试过了:

RewriteRule (.*) http://www.domain.com/%1/listings.html [L]

重定向到正确的页面,但我想将子域名保留在浏览器栏中...

我试过了:

RewriteRule (.*) /%1/listings.html [L]

导致内部服务器错误。

本周之前我真的尝试了很多东西,但没有任何作用......

2 个答案:

答案 0 :(得分:1)

  

RewriteCond%{HTTP_HOST} ^(www。)?([a-z0-9 -_] +)。domain.com [NC]

     

RewriteRule(。*)listings.php?category =%2 [NC,QSA]

     

但是如果启用它,它不起作用,它不理解'category'参数。

%2表示匹配RewriteCond中的第二个模式。在这个cae中,第二个模式是([a-z0-9-_]+)部分。

  

在我的htacces中,如果禁用mod_rewrite,则可以:

如果真正禁用了mod_rewrite,则不会使用这些规则。

  

RewriteRule(。*)http://www.domain.com/%1/listings.html [L]

     

我被重定向到正确的页面,但我想将子域保留在浏览器栏中...

如果您在RewriteRule中提供域名,则始终会被重定向,您只需要提供路径(例如/%1/listings.html)。如果这些域都是同一个VirtualHost的一部分,那么这应该不是问题。

答案 1 :(得分:0)

我使用这个PHP代码解决了这个问题:(www.gitme.net/php/>> Gitme url2subdomain)

<?php

// code by büyücü.   www.gitme.net/php/

$full_url = sprintf($HTTP_HOST);
$subdomain = "";

for($i = 0;$i<=strlen($full_url);$i++)
{

  $dummy = substr($full_url,$i,1);

  if($dummy == ".")
  {
   break;
  }

  $subdomain = $subdomain.$dummy;

}

//



if ($subdomain <> "www")
{

  switch($subdomain)
  {
   case "gazeteler":
     $real_url = "http://www.gitme.net/gazeteler.htm";
     break;
   case "guzel-sozler":
     $real_url = "http://www.gitme.net/guzel-sozler.php";
     break;
    case "burclar":
     $real_url = "http://www.gitme.net/burclar.html";
     break;
      default : $real_url="http://www.gitme.net/";

  }

 include "$real_url";
 exit;
}


?>