วิธีการตรวจสอบและแก้ไขเว็บไซต์ที่ทำงานอยู่บน Cloud GCP, Ubuntu, Apache2 ให้ทำการ Redirect จาก Non-www ไป www หลังจากที่เปิดการใช้งาน https ด้วย Certbot จะช่วยให้ผู้เข้าชมเว็บสามารถดูเว็บไซท์จาก url เดิมที่ยังเป็น http ได้ 

How-to fix Apache2 Certbot https Non-www not redirect to www on Ubuntu Cloud GCP

วิธีการ:

  • เข้าไปที่หน้า VM instances ของ Cloud GCP เพื่อ Run Secure Shell

How-to fix Apache2 Certbot https Non-www not redirect to www on Ubuntu Cloud GCP

  • Run command: certbot certificates เพื่อตรวจดู list ของ certificate names ทั้งหมดที่มีอยู่
    • ใน แต่ละ Certificate name จะต้องมีทั้ง example.com และ www.example.com แสดงอยู่
    • ถ้าไม่มีให้ทำการ update certificate นั้นด้วย certbot command: certbot certonly --cert-name example.com -d example.org,www.example.org ดูการใช้งาน Certbot command เพิ่มเติมได้ที่ https://certbot.eff.org/docs/using.html#certbot-commands
    • หากต้องการลบ Certificate name ที่ซ้ำซ้อน สามารถทำได้โดย การใช้ certbot command: certbot delete --cert-name example.com แต่ให้ตรวจสอบให้แน่ใจว่าไม่มี File .conf ใดๆใน folder /etc/apache2/sites-available เรียกใช้ File certificate ที่ path /etc/letsencrypt/live หากมี เมื่อลบแล้วจะทำให้ Apache ไม่สามารถทำงานได้ หลังจากทำการ Restart

How-to fix Apache2 Certbot https Non-www not redirect to www on Ubuntu Cloud GCP

  • ตรวจสอบการกำหนดค่าของ .conf ของแต่ละ VirtualHost ว่าได้กำหนดให้มีการ redirect จาก Non-www to www ไว้อย่างถูกต้องเรียบร้อยแล้วหรือไม่

<VirtualHost *:80>
<Directory /var/www/erakii.org/public_html>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# 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

ServerAdmin webmaster@localhost
ServerName erakii.org
ServerAlias www.erakii.org

DocumentRoot /var/www/erakii.org/public_html

# 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

RewriteEngine on
RewriteCond %{SERVER_NAME} =www.erakii.org [OR]
RewriteCond %{SERVER_NAME} =erakii.org
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
<Directory /var/www/erakii.org/public_html>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# 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

ServerAdmin webmaster@localhost
ServerName erakii.org
ServerAlias www.erakii.org

DocumentRoot /var/www/erakii.org/public_html

# 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
RewriteEngine on
# Some rewrite rules in this file were disabled on your HTTPS site,
# because they have the potential to create redirection loops.

#RewriteCond %{SERVER_NAME} =www.erakii.org [OR]
#RewriteCond %{SERVER_NAME} =erakii.org
#RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/erakii.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/erakii.org/privkey.pem
</VirtualHost>
</IfModule>

  • จากนั้นทำการ Restart Apache: service apache2 restart แล้วตรวจสอบผลการเปลี่ยนแปลงที่หน้า Browser

 Our services: Website Design and Development

Thank you for your support

  • Electronics วันอังคาร, 10 กุมภาพันธ์ 2552

    วงจรไฟบอกสถานะระดับแรงดันแบตเตอรี่รถยนต์ ที่แสดงผลด้วย LED สามดวง แดง ส้ม และเขียว ซึ่งสามารถบอกถึงระบบการปะจุไฟในรถยนต์ของเราได้อย่างคราวๆ อย่างเช่น ถ้า Batttery มีไฟน้อย LED...

  • Alfa Romeo 156 วันอังคาร, 19 พฤษภาคม 2558

    น้ำมันเกียร์ Alfa Romeo 156 ตาม spec ระบุให้ใช้มาตรฐาน GL-4 เบอร์ 75W85 เวลาเปลี่ยนก็จะยากตอนคลายน็อตถ่านน้ำมันเกียร์ออก เพราะมันจะติดขอบของฝาเกียร์...

  • Automotive วันอังคาร, 11 สิงหาคม 2552

    Fuel Booster, Fuel Additive หรือสารเพิ่มประสิทธิภาพน้ำมันเชื้อเพลิงเบนซิน ที่จะช่วยให้ได้ระยะทางการขับมากขึ้น และลดเขม่าที่เกิดขึ้นจากการเผาไหม้ได้ โดยสารที่ว่านี้ประกอบขึ้นจากสาร 3 ชนิดคือ...