我正在使用2台服务器。 一个是正在使用的服务器,另一个是testing服务器,两者完全相同,关于操作系统,Apache版本和Apacheconfiguration。
OS是Ubuntu 16.04,Apache版本是2.4.29。
这些服务器通过vhost文件使用redirect。
非www到wwwredirect在两个服务器上都能很好地工作。
代码 :
RewriteEngine on RewriteCond %{REQUEST_URI} ^/\.well-known/acme-challenge/ RewriteRule ^ - [END] RewriteCond %{HTTP_HOST} ^example\.com$ [NC] RewriteRule ^(.*)$ http://www.example.com$1 [R=301,NE,L]
但是, 当使用www进行非wwwredirect时,它在testing服务器上运行良好,但在使用服务器上不起作用。
使用服务器得到一个403禁止的错误。
详情如下。
“您无权访问/在此服务器上。”
代码 :
RewriteEngine on RewriteCond %{REQUEST_URI} ^/\.well-known/acme-challenge/ RewriteRule ^ - [END] RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] RewriteRule ^(.*)$ http://example.com$1 [R=301,NE,L]
而且, 即使在vhost文件中没有ServerAlias,正在使用的服务器也不会被redirect,并且testing服务器被很好的redirect。
这是我正在使用的虚拟主机文件。 另外,我正在使用ISPconfig控制面板。
<Directory /var/www/example.com> AllowOverride None Require all denied </Directory> <VirtualHost *:80> DocumentRoot /var/www/clients/client0/web1/web ServerName example.com ServerAdmin [email protected] ErrorLog /var/log/ispconfig/httpd/example.com/error.log Alias /error/ "/var/www/example.com/web/error/" ErrorDocument 400 /error/400.html ErrorDocument 401 /error/401.html ErrorDocument 403 /error/403.html ErrorDocument 404 /error/404.html ErrorDocument 405 /error/405.html ErrorDocument 500 /error/500.html ErrorDocument 502 /error/502.html ErrorDocument 503 /error/503.html <IfModule mod_ssl.c> </IfModule> <Directory /var/www/example.com/web> # Clear PHP settings of this website <FilesMatch ".+\.ph(p[345]?|t|tml)$"> SetHandler None </FilesMatch> Options +FollowSymLinks AllowOverride All Require all granted </Directory> <Directory /var/www/clients/client0/web1/web> # Clear PHP settings of this website <FilesMatch ".+\.ph(p[345]?|t|tml)$"> SetHandler None </FilesMatch> Options +FollowSymLinks AllowOverride All Require all granted </Directory> # suexec enabled <IfModule mod_suexec.c> SuexecUserGroup web1 client0 </IfModule> <IfModule mod_fastcgi.c> <Directory /var/www/clients/client0/web1/cgi-bin> Require all granted </Directory> <Directory /var/www/example.com/web> <FilesMatch "\.php[345]?$"> SetHandler php5-fcgi </FilesMatch> </Directory> <Directory /var/www/clients/client0/web1/web> <FilesMatch "\.php[345]?$"> SetHandler php5-fcgi </FilesMatch> </Directory> Action php5-fcgi /php5-fcgi virtual Alias /php5-fcgi /var/www/clients/client0/web1/cgi-bin/php5-fcgi-*-80-example.com FastCgiExternalServer /var/www/clients/client0/web1/cgi-bin/php5-fcgi-*-80-example.com -idle-timeout 300 -socket /var/lib/php7.0-fpm/web1.sock -pass-header Authorization -pass-header Content-Type </IfModule> <IfModule mod_proxy_fcgi.c> #ProxyPassMatch ^/(.*\.php[345]?(/.*)?)$ unix:///var/lib/php7.0-fpm/web1.sock|fcgi://localhost//var/www/clients/client0/web1/web/$1 <Directory /var/www/clients/client0/web1/web> <FilesMatch "\.php[345]?$"> SetHandler "proxy:unix:/var/lib/php7.0-fpm/web1.sock|fcgi://localhost" </FilesMatch> </Directory> </IfModule> RewriteEngine on RewriteCond %{REQUEST_URI} ^/\.well-known/acme-challenge/ RewriteRule ^ - [END] RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] RewriteRule ^(.*)$ http://example.com$1 [R=301,NE,L] # add support for apache mpm_itk <IfModule mpm_itk_module> AssignUserId web1 client0 </IfModule> <IfModule mod_dav_fs.c> # Do not execute PHP files in webdav directory <Directory /var/www/clients/client0/web1/webdav> <ifModule mod_security2.c> SecRuleRemoveById 960015 SecRuleRemoveById 960032 </ifModule> <FilesMatch "\.ph(p3?|tml)$"> SetHandler None </FilesMatch> </Directory> DavLockDB /var/www/clients/client0/web1/tmp/DavLock # DO NOT REMOVE THE COMMENTS! # IF YOU REMOVE THEM, WEBDAV WILL NOT WORK ANYMORE! # WEBDAV BEGIN # WEBDAV END </IfModule> </VirtualHost>
在这种情况下,我可以在哪里find问题?
它不与域地址相关联。 域名就是例子。