0

我有一个启用子域访问的网站,例如:

 http://subdomain1.example.com

它访问相同的代码,但传递一个域参数以显示不同的微型站点。它的 httpd.conf 代码如下所示:

 RewriteCond %{HTTP_HOST} ^([^./]+)\.example\.com$
 RewriteRule forums.html$ /browse.php?type=forums&domain=%1 [QSA]

现在我需要将http://example.com重定向到http://www.example.com

我试过这个,但没有奏效:

   RewriteCond %{HTTP_HOST} ^example\.com
   RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

(来源:http ://www.cyberciti.biz/faq/apache-redirect-domaincom-to-wwwdomaincom/ )

编辑1

<VirtualHost IPADDRESS:80>
    ServerAlias *.example.com
    DocumentRoot /var/www/html/abc
    ServerName www.example.com
    UseCanonicalName On

编辑2

嗨,mreithub,

我需要的设置是这样的:

http://X1.example.com应该使用 /something/X1 中的代码

http://X2.example.com应该使用 /something/X2 中的代码

http://example.com应该重定向到http://www.example.com

http://www.example.com/scriptA.php应该使用 /var/www/html/abc/scriptA.php 中的代码

http://whateverelse.example.com/scriptA.php应该使用 /var/www/html/abc/scriptA.php 中的代码,但使用 'domain=whateverelse' 参数传递(但屏幕上的 URL 应始终显示将域显示为http://whateverelse.example.com

我曾在 SF 上问过一个问题 - https://serverfault.com/questions/408805/configuring-httpd-conf-to-handle-wildcard-domains-with-multiple-scripts - 从那里我使用了适配器的技术来传递域PHP 脚本的参数。

4

2 回答 2

0

哇。3 小时后……很多变化,很多学习。

1)改变了这个:

   NameVirtualHost IPADDRESS:80

至:

   NameVirtualHost *:80

2) 全部标记:

   <VirtualHost IPADDRESS:80>

作为:

   <VirtualHost *:80>

3)重新排列 ServerName 并将其放在 VirtualHost 中(不确定这是否有任何区别)

<VirtualHost *:80>
    ServerName test4.example.com
    ServerAlias test4.example.com
    DocumentRoot /home/test4/public_html
    UseCanonicalName On
</VirtualHost>

3) 重新排列所有虚拟主机。将“静态”/固定子域放在前面,将包罗万象的/www 放在最后一个。最后一个看起来像:

<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com *.example.com
    DocumentRoot /var/www/html/abc
    UseCanonicalName On
    ...
于 2012-11-08T04:29:22.267 回答
0

My personal favorite for redirecting whole VirtualHosts in apache is to simply create a VirtualHost for the domain to redirect and use the Redirect directive:

<VirtualHost IPADDRESS:80>
  ServerName example.com
  Redirect / http://www.example.com/
  DocumentRoot /var/www # <-- Just for completeness
</VirtualHost>

... and then another VirtualHost for your actual website

Redirect redirects every request going to host a to b while keeping any postfixes (e.g. http://example.com/foo?bar=bak becomes http://www.example.com/foo?bar=bak).

I use Redirect a lot to rewrite from http:// to https://

于 2012-11-08T00:55:42.953 回答