Apache 将任何子域的规则重写为主域
我有一个名为mailcake.com的网站,我想让beta.mailcake.com重定向到mailcake.com,我如何实现这一点?我在/etc/httpd/conf.d/mailcake.conf上有这样的代码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
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重写的结果并检查出了什么问题。请参阅