Php 使用httpd将www.domain.com和domain.com重定向到subdomain.domain.com

Php 使用httpd将www.domain.com和domain.com重定向到subdomain.domain.com,php,apache,http,redirect,mod-rewrite,Php,Apache,Http,Redirect,Mod Rewrite,我想重定向: 情景1example.comtosubdomain.example.com <VirtualHost *:80> ServerName example.com ServerAlias www.example.com example.com Redirect permanent / http://subdomain.example.com/ </VirtualHost> <VirtualHost *:80>

我想重定向:

情景1
example.com
to
subdomain.example.com

<VirtualHost *:80>
     ServerName example.com
     ServerAlias www.example.com example.com
     Redirect permanent / http://subdomain.example.com/
</VirtualHost>

<VirtualHost *:80>
     DocumentRoot "/var/www/html/foo"
     ServerName subdomain.example.com
     ServerAlias subdomain.example.com
     <Directory "/var/www/html/foo">
                Options Indexes FollowSymLinks Includes
                Options +ExecCGI
                AllowOverride All
                Order allow,deny
                Allow from All
     </Directory>
</VirtualHost>
情景2
www.example.com
to
subdomain.example.com

<VirtualHost *:80>
     ServerName example.com
     ServerAlias www.example.com example.com
     Redirect permanent / http://subdomain.example.com/
</VirtualHost>

<VirtualHost *:80>
     DocumentRoot "/var/www/html/foo"
     ServerName subdomain.example.com
     ServerAlias subdomain.example.com
     <Directory "/var/www/html/foo">
                Options Indexes FollowSymLinks Includes
                Options +ExecCGI
                AllowOverride All
                Order allow,deny
                Allow from All
     </Directory>
</VirtualHost>
我已经将这两段代码放在了httpd.conf中。只有情况2起作用,但情况1不起作用

<VirtualHost *:80>
     DocumentRoot "/var/www/html/foo"
     ServerName domain.com
     ServerAlias subdomain.example.com
     <Directory "/var/www/html/foo">
                Options Indexes FollowSymLinks Includes
                Options +ExecCGI
                AllowOverride All
                Order allow,deny
                Allow from All
     </Directory>
     Redirect permanent http://example.com/ http://subdomain.example.com/
</VirtualHost>

<VirtualHost *:80>
     DocumentRoot "/var/www/html/foo"
     ServerName www.example.com
     ServerAlias subdomain.example.com
     <Directory "/var/www/html/foo">
                Options Indexes FollowSymLinks Includes
                Options +ExecCGI
                AllowOverride All
                Order allow,deny
                Allow from All
     </Directory>
     Redirect permanent / http://subdomain.example.com/
</VirtualHost>

DocumentRoot“/var/www/html/foo”
ServerName域名.com
ServerAlias subdomain.example.com
选项索引和以下符号链接包括
选项+执行CGI
允许超越所有
命令允许,拒绝
通融
重定向永久http://example.com/ http://subdomain.example.com/
DocumentRoot“/var/www/html/foo”
服务器名www.example.com
ServerAlias subdomain.example.com
选项索引和以下符号链接包括
选项+执行CGI
允许超越所有
命令允许,拒绝
通融
重定向永久/http://subdomain.example.com/

我想你可以试试这个:

<VirtualHost *:80>
     DocumentRoot "/var/www/html/foo"
     ServerName www.example.com
     ServerAlias example.com

     <Directory "/var/www/html/foo">
                Options Indexes FollowSymLinks Includes
                Options +ExecCGI
                AllowOverride All
                Order allow,deny
                Allow from All
     </Directory>

     Redirect permanent / http://subdomain.example.com/
</VirtualHost>

DocumentRoot“/var/www/html/foo”
服务器名www.example.com
ServerAlias example.com
选项索引和以下符号链接包括
选项+执行CGI
允许超越所有
命令允许,拒绝
通融
重定向永久/http://subdomain.example.com/

我找到了答案。将
example.com
www.example.com
重定向到
subdomain.example.com
,然后只设置
subdomain.example.com

<VirtualHost *:80>
     ServerName example.com
     ServerAlias www.example.com example.com
     Redirect permanent / http://subdomain.example.com/
</VirtualHost>

<VirtualHost *:80>
     DocumentRoot "/var/www/html/foo"
     ServerName subdomain.example.com
     ServerAlias subdomain.example.com
     <Directory "/var/www/html/foo">
                Options Indexes FollowSymLinks Includes
                Options +ExecCGI
                AllowOverride All
                Order allow,deny
                Allow from All
     </Directory>
</VirtualHost>

ServerName example.com
ServerAlias www.example.com example.com
重定向永久/http://subdomain.example.com/
DocumentRoot“/var/www/html/foo”
ServerName subdomain.example.com
ServerAlias subdomain.example.com
选项索引和以下符号链接包括
选项+执行CGI
允许超越所有
命令允许,拒绝
通融
通过在httpd.conf中使用这些代码,我能够:

  • example.com
    重定向到
    subdomain.example.com

  • <VirtualHost *:80>
         ServerName example.com
         ServerAlias www.example.com example.com
         Redirect permanent / http://subdomain.example.com/
    </VirtualHost>
    
    <VirtualHost *:80>
         DocumentRoot "/var/www/html/foo"
         ServerName subdomain.example.com
         ServerAlias subdomain.example.com
         <Directory "/var/www/html/foo">
                    Options Indexes FollowSymLinks Includes
                    Options +ExecCGI
                    AllowOverride All
                    Order allow,deny
                    Allow from All
         </Directory>
    </VirtualHost>
    
  • www.example.com
    重定向到
    subdomain.example.com

  • <VirtualHost *:80>
         ServerName example.com
         ServerAlias www.example.com example.com
         Redirect permanent / http://subdomain.example.com/
    </VirtualHost>
    
    <VirtualHost *:80>
         DocumentRoot "/var/www/html/foo"
         ServerName subdomain.example.com
         ServerAlias subdomain.example.com
         <Directory "/var/www/html/foo">
                    Options Indexes FollowSymLinks Includes
                    Options +ExecCGI
                    AllowOverride All
                    Order allow,deny
                    Allow from All
         </Directory>
    </VirtualHost>
    

    PHP请求是什么?@Forbs我在问题中已经说过,情况1和情况2您是否尝试复制第二种情况并粘贴它以替换第一种情况,然后删除example.com上的www?是的,我将收到example.com或subdomain.example.com
    多次重定向您的错误。如果我进入www.example.com,链接将无效