0

我已经搜索了很多教程,但对我没有任何帮助。我想用 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]

但是如果启用,它就不起作用,它不理解“类别”参数。

我试过这个:

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

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

我试过这个:

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

它导致内部服务器错误。

在这周之前我真的尝试了很多东西,但没有任何效果......

4

2 回答 2

1

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

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

但是如果启用,它就不起作用,它不理解“类别”参数。

%2匹配 s 中第二个模式的方法RewriteCond。在这种情况下,第二个模式是([a-z0-9-_]+)零件。

在我的 htacces 中,如果 mod_rewrite 被禁用,这有效:

如果 mod_rewrite 真的被禁用,那么这些规则就不会被使用。

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

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

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

于 2013-02-02T00:00:34.803 回答
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;
}


?>
于 2013-02-02T02:48:11.347 回答