Apache2上的Yii2高级:将www重定向到非www

Apache2上的Yii2高级:将www重定向到非www,apache,.htaccess,yii2,Apache,.htaccess,Yii2,我有一个带有子域的Yii2高级安装。 我的前端域是,但是www.xxx.tld也可以工作 我希望所有的www请求都被重定向到非www。我尝试使用传统的方法,但它似乎不起作用 我的所有子域以及@和www 这是我的xxx.tld配置文件: /apache2/sites available/xxx.tld.conf <VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port

我有一个带有子域的Yii2高级安装。 我的前端域是,但是www.xxx.tld也可以工作

我希望所有的www请求都被重定向到非www。我尝试使用传统的方法,但它似乎不起作用

我的所有子域以及
@
www

这是我的xxx.tld配置文件:

/apache2/sites available/xxx.tld.conf

<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerName xxx.xxx
ServerAdmin contact@xxx.xxx
DocumentRoot /var/www/xxx.xxx/frontend/web


    <Directory "/var/www/xxx.xxx/frontend/web/">
    # Redirect www to non-www
    RewriteEngine on
    RewriteBase /
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L,NE]


        # If a directory or a file exists, use the request directly
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        # Otherwise forward the request to index.php
        RewriteRule . index.php
    AllowOverride All
        # ...other settings...
    </Directory>

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

#ServerName指令设置请求方案、主机名和端口
#服务器使用来标识自身。这在创建时使用
#重定向URL。在虚拟主机的上下文中,服务器名
#指定必须在请求的主机:标头中显示的主机名
#匹配此虚拟主机。对于默认虚拟主机(此文件),此
#该值不是决定性的,因为它被用作最后的宿主。
#但是,必须为任何其他虚拟主机显式设置它。
#服务器名www.example.com
服务器名xxx.xxx
服务器管理员contact@xxx.xxx
DocumentRoot/var/www/xxx.xxx/frontend/web
#将www重定向到非www
重新启动发动机
重写基/
重写cond%{HTTP_HOST}^www\.(.+)$[NC]
重写规则^(.*)$http://%1/$1[R=301,L,NE]
#如果存在目录或文件,请直接使用请求
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
#否则,将请求转发到index.php
重写规则。index.php
允许超越所有
#…其他设置。。。
#可用日志级别:trace8、…、trace1、调试、信息、通知、警告、,
#错误、暴击、警报、紧急情况。
#还可以为特定应用程序配置日志级别
#模块,例如。
#日志级别信息ssl:警告
ErrorLog${APACHE_LOG_DIR}/error.LOG
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合
#对于conf/available/中的大多数配置文件
#在全局级别启用或禁用,可以
#仅包含一个特定虚拟主机的行。例如
#以下行仅为此主机启用CGI配置
#在使用“A2F”全局禁用后。
#包括conf available/service-cgi-bin.conf
#vim:syntax=apachets=4sw=4sts=4srnoet

既然您可以直接访问主要的Apache配置,那么首先就不需要修改mod_rewrite。在适当的容器中放置好的旧
永久
就足够了:

#
# Secondary domains
#
<VirtualHost *:80>
    ServerName www.xxx.tld
    # Other alternatives domains:
    ServerAlias example.net www.example.net
    ServerAlias example.org www.example.org

    RedirectPermanent / http://xxx.tld/
</VirtualHost>


#
# Main site
#
<VirtualHost *:80>
    ServerName xxx.tld

    DocumentRoot /var/www/xxx.xxx/frontend/web
    # ...
</VirtualHost>
#
#次级域
#
服务器名www.xxx.tld
#其他备选领域:
ServerAlias example.net www.example.net
ServerAlias example.org www.example.org
重定向永久/http://xxx.tld/
#
#主站点
#
ServerName xxx.tld
DocumentRoot/var/www/xxx.xxx/frontend/web
# ...

谢谢!将在赏金可用时授予赏金