英文:
How to fix HTTP 400 Bad Request error when accessing WordPress
问题
在WordPress站点上,我使用在Google Compute Engine上托管的Apache服务器。我遇到的问题是,当我尝试使用HTTP连接到站点时,出现400 Bad Request错误。HTTPS没有问题,而且我有SSL证书。当Certbot询问我时,我确保将HTTP重定向到HTTPS。
我还在以下文件中进行了必要的更改,但没有进行重定向。如果你有任何线索,我全听着。感谢你的帮助。
这是我的apache2.conf
文件:
# 这是主要的Apache服务器配置文件。它包含了
# 给服务器提供指令的配置指令。
# 有关详细信息,请参见http://httpd.apache.org/docs/2.4/
# 以及Debian特定提示的/usr/share/doc/apache2/README.Debian。
#
# ...
#(以下略)
# 全局配置
#
这是我的wordpress-https.conf
文件,位于/etc/apache2/sites-enabled
:
<VirtualHost *:443>
ServerAdmin admin@example.com
DocumentRoot /var/www/html
SSLEngine on
<Directory /var/www/html>
Options -Indexes
AllowOverride FileInfo
</Directory>
ServerName enerdf.fr
Include /etc/letsencrypt/options-ssl-apache.conf
ServerAlias www.enerdf.fr
SSLCertificateFile /etc/letsencrypt/live/enerdf.fr/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/enerdf.fr/privkey.pem
</VirtualHost>
<VirtualHost *:80>
ServerAdmin admin@example.com
DocumentRoot /var/www/html
<Directory /var/www/html>
Options -Indexes
AllowOverride FileInfo
</Directory>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{SERVER_NAME} =enerdf.fr [OR]
RewriteCond %{SERVER_NAME} =www.enerdf.fr
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
我考虑在每次修改后重新启动服务器,但没有改变任何东西。
英文:
I am on a WordPress site hosted on Google Compute Engine with an Apache server. The problem I am facing is that when I try to connect to my site using HTTP, I get a 400 Bad Request error. There is no problem with HTTPS, and I have an SSL certificate. When Certbot asked me to, I made sure to redirect HTTP to HTTPS.
I have also made the necessary changes in the files below, but no redirection is done.If you have any leads, I am all ears. Thanks for your help.
here my apache2.conf in etc/apache2/
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-html -->
# This is the main Apache server configuration file. It contains the
# configuration directives that give the server its instructions.
# See http://httpd.apache.org/docs/2.4/ for detailed information about
# the directives and /usr/share/doc/apache2/README.Debian about Debian specific
# hints.
#
#
# Summary of how the Apache 2 configuration works in Debian:
# The Apache 2 web server configuration in Debian is quite different to
# upstream's suggested way to configure the web server. This is because Debian's
# default Apache2 installation attempts to make adding and removing modules,
# virtual hosts, and extra configuration directives as flexible as possible, in
# order to make automating the changes and administering the server as easy as
# possible.
# It is split into several files forming the configuration hierarchy outlined
# below, all located in the /etc/apache2/ directory:
#
# /etc/apache2/
# |-- apache2.conf
# | `-- ports.conf
# |-- mods-enabled
# | |-- *.load
# | `-- *.conf
# |-- conf-enabled
# | `-- *.conf
# | `-- sites-enabled
# | `-- *.conf
#
#
# * apache2.conf is the main configuration file (this file). It puts the pieces
# together by including all remaining configuration files when starting up the
# web server.
#
# * ports.conf is always included from the main configuration file. It is
# supposed to determine listening ports for incoming connections which can be
# customized anytime.
#
# * Configuration files in the mods-enabled/, conf-enabled/ and sites-enabled/
# directories contain particular configuration snippets which manage modules,
# global configuration fragments, or virtual host configurations,
# respectively.
#
# They are activated by symlinking available configuration files from their
# respective *-available/ counterparts. These should be managed by using our
# helpers a2enmod/a2dismod, a2ensite/a2dissite and a2enconf/a2disconf. See
# their respective man pages for detailed information.
#
# * The binary is called apache2. Due to the use of environment variables, in
# the default configuration, apache2 needs to be started/stopped with
# /etc/init.d/apache2 or apache2ctl. Calling /usr/bin/apache2 directly will not
# work with the default configuration.
# Global configuration
#
<!-- end snippet -->
here my conf enabled "wordpress-https.conf" in /etc/apache2/sites-enabled
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-html -->
<VirtualHost *:443>
ServerAdmin admin@example.com
DocumentRoot /var/www/html
SSLEngine on
<Directory /var/www/html>
Options -Indexes
AllowOverride FileInfo
</Directory>
ServerName enerdf.fr
Include /etc/letsencrypt/options-ssl-apache.conf
ServerAlias www.enerdf.fr
SSLCertificateFile /etc/letsencrypt/live/enerdf.fr/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/enerdf.fr/privkey.pem
</VirtualHost>
<VirtualHost *:80>
ServerAdmin admin@example.com
DocumentRoot /var/www/html
<Directory /var/www/html>
Options -Indexes
AllowOverride FileInfo
</Directory>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{SERVER_NAME} =enerdf.fr [OR]
RewriteCond %{SERVER_NAME} =www.enerdf.fr
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<!-- end snippet -->
I thought about restarting the server after each modification, but it doesn't change anything
答案1
得分: 1
我最终发现我需要像这样在端口80上禁用SSL:
<!-- 开始代码片段:js 隐藏:false 控制台:true Babel:false -->
<!-- 语言:lang-html -->
<VirtualHost *:80>
ServerName exemple.com
SSLEngine off
Redirect permanent / https://exemple.com
</VirtualHost>
<!-- 结束代码片段 -->
英文:
I finally found that I needed to disable ssl on port 80 like this :
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-html -->
<VirtualHost *:80>
ServerName exemple.com
SSLEngine off
Redirect permanent / https://exemple.com
</VirtualHost>
<!-- end snippet -->
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论