我已经搜索了很多教程,对我没用。 我想创建带有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]
导致内部服务器错误。
本周之前我真的尝试了很多东西,但没有任何作用......
答案 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;
}
?>