Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 将任何子域的规则重写为主域_Apache_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

Apache 将任何子域的规则重写为主域

Apache 将任何子域的规则重写为主域,apache,.htaccess,mod-rewrite,url-rewriting,Apache,.htaccess,Mod Rewrite,Url Rewriting,我有一个名为mailcake.com的网站,我想让beta.mailcake.com重定向到mailcake.com,我如何实现这一点?我在/etc/httpd/conf.d/mailcake.conf上有这样的代码 NameVirtualHost *:443 <VirtualHost *:80> DocumentRoot /var/www/mailcake ServerName mailcake.com ServerAlias www.mailcake.c

我有一个名为mailcake.com的网站,我想让beta.mailcake.com重定向到mailcake.com,我如何实现这一点?我在/etc/httpd/conf.d/mailcake.conf上有这样的代码

NameVirtualHost *:443

<VirtualHost *:80>
    DocumentRoot /var/www/mailcake
    ServerName mailcake.com
    ServerAlias www.mailcake.com beta.mailcake.com

RewriteEngine On
RewriteCond %{HTTP_HOST} ^beta\.mailcake\.com$ [NC]
RewriteRule (.+)$ "http://mailcake.com" [L,P]   

    ErrorLog /var/log/mailcake.com-error_log
    <Directory />
        Options Indexes FollowSymLinks
        AllowOverride All
    </Directory>
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot /var/www/mailcake
    ServerName mailcake.com
    ServerAlias www.mailcake.com

SSLEngine on
SSLCertificateFile /var/www/mailcake.crt
SSLCertificateKeyFile /var/www/mailcake.key
    ErrorLog /var/log/mailcake.com-error_log
    <Directory />
        Options Indexes FollowSymLinks
        AllowOverride All
    </Directory>
</VirtualHost>
NameVirtualHost*:443
DocumentRoot/var/www/mailcake
ServerName mailcake.com
ServerAlias www.mailcake.com beta.mailcake.com
重新启动发动机
RewriteCond%{HTTP_HOST}^beta\.mailcake\.com$[NC]
重写规则(+)$”http://mailcake.com“[L,P]
ErrorLog/var/log/mailcake.com-error\u log
选项索引跟随符号链接
允许超越所有
DocumentRoot/var/www/mailcake
ServerName mailcake.com
ServerAlias www.mailcake.com
斯伦金安
SSLCertificateFile/var/www/mailcake.crt
SSLCertificateKeyFile/var/www/mailcake.key
ErrorLog/var/log/mailcake.com-error\u log
选项索引跟随符号链接
允许超越所有

但是它不起作用

当使用一些URL进行测试时,以下内容似乎起作用:

RewriteCond %{HTTP_HOST} ^(beta\.)?mailcake\.com
RewriteRule (.*) http://mailcake.com/$1 [QSA]
这里重要的一点是添加
$1
,以确保将任何路径添加到URL(在您的示例中,
http://beta.mailcake.com/stats/
将被重定向到
http://mailcake.com/
,这可能是不可取的。另外,添加
[QSA]
应确保传递任何查询字符串


如果您在
httpd.conf
中执行重定向,我可能也不会添加
[L]
,因为它可能会阻止任何
.htaccess
文件中的其他有效重定向工作。

当使用几个URL进行测试时,以下内容似乎有效:

RewriteCond %{HTTP_HOST} ^(beta\.)?mailcake\.com
RewriteRule (.*) http://mailcake.com/$1 [QSA]
这里重要的一点是添加
$1
,以确保将任何路径添加到URL(在您的示例中,
http://beta.mailcake.com/stats/
将被重定向到
http://mailcake.com/
,这可能是不可取的。另外,添加
[QSA]
应确保传递任何查询字符串


如果您在
httpd.conf
中执行重定向,我可能也不会添加
[L]
,因为它可以阻止任何
.htaccess
文件中的其他有效重定向工作。

您确定安装并加载了mod_rewrite吗?您是否尝试过重写其他内容以检查?@ZeWaren是的,安装并加载了它,我尝试过重写其他内容,并且工作正常。您可以尝试设置自定义日志以查看结果apache的重写并检查出了什么问题。请参阅是否确实安装并加载了mod_rewrite?是否尝试重写任何其他内容以进行检查?@ZeWaren是的,安装并加载了,我尝试重写了其他内容,效果良好。您可以尝试设置自定义日志以查看apache重写的结果并检查出了什么问题。请参阅