ฉันพยายามเปลี่ยนเส้นทางคำขอ HTTP ที่ไม่ปลอดภัยทั้งหมดบนเว็บไซต์ของฉัน (เช่นhttp://www.example.com
) ไปยัง HTTPS ( https://www.example.com
) ฉันใช้ PHP btw ฉันสามารถทำได้ใน. htaccess หรือไม่
http://
ฉันพยายามเปลี่ยนเส้นทางคำขอ HTTP ที่ไม่ปลอดภัยทั้งหมดบนเว็บไซต์ของฉัน (เช่นhttp://www.example.com
) ไปยัง HTTPS ( https://www.example.com
) ฉันใช้ PHP btw ฉันสามารถทำได้ใน. htaccess หรือไม่
http://
คำตอบ:
อัปเดต:แม้ว่าคำตอบนี้จะได้รับการยอมรับเมื่อไม่กี่ปีที่ผ่านมา แต่โปรดทราบว่าขณะนี้เอกสารแนะนำ Apache ได้ให้แนวทางการใช้งานแล้ว ใช้Redirect
แทน ดูคำตอบนี้
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
http://server/foo?email=someone%40example.com
เปลี่ยนเส้นทางไปhttps://server/foo?email=someone%2540example.com
คือเครื่องหมาย "@" ได้รับ URL ที่ยกมาสองครั้ง การใช้วิธีการในคำตอบของ @ ssc ไม่มีปัญหานี้
In the case of the http-to-https redirection, the use of RewriteRule would be appropriate if you don't have access to the main server configuration file, and are obliged to perform this task in a .htaccess file instead.
เอกสาร Apacheแนะนำต่อโดยใช้เขียนใหม่:
หากต้องการเปลี่ยนเส้นทาง
http
URL ไปที่ให้https
ทำดังต่อไปนี้:<VirtualHost *:80> ServerName www.example.com Redirect / https://www.example.com/ </VirtualHost> <VirtualHost *:443> ServerName www.example.com # ... SSL configuration goes here </VirtualHost>
ข้อมูลโค้ดนี้ควรเข้าสู่ไฟล์กำหนดค่าเซิร์ฟเวอร์หลักไม่ใช่เข้าไป.htaccess
ตามที่ถามในคำถาม
บทความนี้อาจเกิดขึ้นหลังจากมีการถามและตอบคำถามแล้ว แต่ดูเหมือนจะเป็นวิธีการในปัจจุบัน
permanent
คำหลักผลจะเหมือนกัน (เบราว์เซอร์จะได้รับการเปลี่ยนเส้นทาง 301) เช่น:Redirect permanent "/" "https://example.com"
ฉันขอแนะนำให้เปลี่ยนเส้นทาง 301:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
[L]
ตามที่ฉันพูดในคำถามนี้ฉันขอแนะนำให้คุณหลีกเลี่ยงการเปลี่ยนเส้นทางคำขอ HTTP ทั้งหมดไปยัง HTTPS ที่เทียบเท่ากับสุ่มสี่สุ่มห้าเพราะอาจทำให้คุณรู้สึกถึงความปลอดภัยผิดพลาด แต่คุณควรเปลี่ยนเส้นทาง "รูท" ของไซต์ HTTP ของคุณไปยังรูทของไซต์ HTTPS และลิงก์จากที่นั่นไปยัง HTTPS เท่านั้น
ปัญหาคือถ้าลิงค์หรือแบบฟอร์มบางส่วนในเว็บไซต์ HTTPS ทำให้ลูกค้าส่งคำขอไปยังเว็บไซต์ HTTP เนื้อหาของมันจะมองเห็นได้ก่อนการเปลี่ยนเส้นทาง
ตัวอย่างเช่นหากหนึ่งในหน้าเว็บของคุณที่ให้บริการผ่าน HTTPS มีแบบฟอร์มที่แจ้ง<form action="http://example.com/doSomething">
และส่งข้อมูลบางอย่างที่ไม่ควรส่งชัดเจนเบราว์เซอร์จะส่งคำขอแบบเต็มก่อน (รวมถึงเอนทิตีถ้าเป็น POST) ไปยังไซต์ HTTP เป็นครั้งแรก การเปลี่ยนเส้นทางจะถูกส่งไปยังเบราว์เซอร์ทันทีและเนื่องจากผู้ใช้จำนวนมากปิดการใช้งานหรือเพิกเฉยต่อคำเตือนจึงมีโอกาสที่จะถูกละเว้น
แน่นอนว่าข้อผิดพลาดในการให้ลิงก์ที่ควรเป็นไปยังไซต์ HTTPS แต่ท้ายที่สุดแล้วสำหรับเว็บไซต์ HTTP อาจทำให้เกิดปัญหาทันทีที่คุณได้รับฟังพอร์ต HTTP บนที่อยู่ IP เดียวกันกับไซต์ HTTPS ของคุณ อย่างไรก็ตามฉันคิดว่าการรักษาทั้งสองไซต์เป็น "มิเรอร์" จะเพิ่มโอกาสในการทำผิดพลาดเท่านั้นเนื่องจากคุณอาจมีข้อสันนิษฐานว่าจะแก้ไขตัวเองโดยอัตโนมัติโดยเปลี่ยนเส้นทางผู้ใช้ไปยัง HTTPS ในขณะที่มักจะสายเกินไป (มีการอภิปรายคล้ายกันในคำถามนี้ )
ฉันพบว่าวิธีที่ดีที่สุดสำหรับ https และ www ในโดเมนคือ
RewriteCond %{HTTPS} off
RewriteCond %{HTTPS_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
http://www.example.com/...
เนื่องจากทั้งสองเงื่อนไขเป็นแบบ AND และ พวกเขาควรจะเป็น OR'd แทนเช่น รวมถึงการOR
ตั้งค่าสถานะในเงื่อนไขแรก (และอย่าลืมหลีกเลี่ยงจุดสัญพจน์ใน regex) แต่ถ้าคุณมีการดำเนินการHSTSแล้วคุณไม่ต้องการที่จะเปลี่ยนเส้นทางไปยัง HTTPS และ www ในการเปลี่ยนเส้นทางเดียวที่คุณควรเปลี่ยนเส้นทางไปยัง HTTPS แรก
นี่คือวิธีการเปลี่ยนเส้นทาง html ที่ใช้งานได้ แต่ไม่ใช่วิธีที่ดีที่สุด
<meta http-equiv="Refresh" content="0;URL=https://www.example.com" />
วิธีการของ PHP
<?php
function redirectTohttps() {
if ($_SERVER['HTTPS']!="on") {
$redirect= "https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
header("Location:$redirect");
}
}
?>
.htaccess approch
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
คัดลอกมาจาก: www.letuslook.org
.htaccess
ไป? และลิงก์นั้นก็ตาย
ฉันชอบวิธีการเปลี่ยนเส้นทางจาก http ไปยัง https เพราะฉันไม่จำเป็นต้องแก้ไขสำหรับแต่ละไซต์
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
การใช้รหัสต่อไปนี้ในไฟล์. htaccess ของคุณจะเปลี่ยนเส้นทางผู้เข้าชมไปยังรุ่น HTTPS ในเว็บไซต์ของคุณโดยอัตโนมัติ:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
หากคุณมีไฟล์. htaccess อยู่:
อย่าทำซ้ำ RewriteEngine On
ตรวจสอบให้แน่ใจว่าบรรทัดที่เริ่มต้น RewriteCond และ RewriteRule ปฏิบัติตาม RewriteEngine On ที่มีอยู่แล้วทันที
นี่เป็นวิธีที่เหมาะสมในการเปลี่ยนเส้นทาง HTTP ไปยัง HTTPS โดยใช้. htaccess ตาม GoDaddy.com บรรทัดแรกของรหัสคืออธิบายตนเอง บรรทัดที่สองของรหัสจะตรวจสอบเพื่อดูว่าปิดหรือไม่และถ้าเป็นเช่นนั้นจะเปลี่ยนเส้นทาง HTTP ไปยัง HTTPS โดยเรียกใช้รหัสบรรทัดที่สามมิฉะนั้นบรรทัดที่สามจะถูกละเว้น
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
https://www.godaddy.com/help/redirect-http-to-https-automatically-8828
ทางออกที่ดีที่สุดขึ้นอยู่กับความต้องการของคุณ นี่คือบทสรุปของคำตอบที่โพสต์ก่อนหน้านี้โดยมีการเพิ่มบริบท
หากคุณทำงานกับเว็บเซิร์ฟเวอร์ Apache และสามารถเปลี่ยนการตั้งค่าได้ให้ทำตามเอกสาร Apache :
<VirtualHost *:80>
ServerName www.example.com
Redirect "/" "https://www.example.com/"
</VirtualHost>
<VirtualHost *:443>
ServerName www.example.com
# ... SSL configuration goes here
</VirtualHost>
แต่คุณยังถามว่าคุณสามารถทำได้ใน.htaccess
ไฟล์หรือไม่ ในกรณีนี้คุณสามารถใช้RewriteEngineของ Apache ได้:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]
หากทุกอย่างทำงานได้ดีและคุณต้องการให้เบราว์เซอร์จดจำการเปลี่ยนเส้นทางนี้คุณสามารถประกาศให้เป็นแบบถาวรได้โดยเปลี่ยนบรรทัดสุดท้ายเป็น:
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
แต่ระวังหากคุณเปลี่ยนใจเมื่อเปลี่ยนเส้นทางนี้ เบราว์เซอร์จดจำได้เป็นเวลานานและจะไม่ตรวจสอบว่ามีการเปลี่ยนแปลงหรือไม่
คุณอาจไม่ต้องการบรรทัดแรก RewriteEngine On
ขึ้นอยู่กับการกำหนดค่าเว็บเซิร์ฟเวอร์
หากคุณมองหาโซลูชัน PHP ดูที่อาร์เรย์ $ _SERVERและฟังก์ชันส่วนหัว :
if (!$_SERVER['HTTPS']) {
header("Location: https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
}
.htaccess
ไฟล์
เพิ่มรหัสต่อไปนี้ไปยังไฟล์. htaccess:
Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^ https://[your domain name]%{REQUEST_URI} [R,L]
โดยที่ [ชื่อโดเมนของคุณ] เป็นชื่อโดเมนของเว็บไซต์ของคุณ
คุณสามารถเปลี่ยนเส้นทางโฟลเดอร์เฉพาะออกจากชื่อโดเมนของคุณโดยแทนที่บรรทัดสุดท้ายของรหัสด้านบนด้วย:
RewriteRule ^ https://[your domain name]/[directory name]%{REQUEST_URI} [R,L]
ทำทุกอย่างที่อธิบายไว้ด้านบนเพื่อเปลี่ยนเส้นทาง เพียงเพิ่ม "HTTP Strict Transport Security" ไว้ในส่วนหัวของคุณ สิ่งนี้จะหลีกเลี่ยงมนุษย์ในการโจมตีตรงกลาง
แก้ไขไฟล์การกำหนดค่า apache ของคุณ (/etc/apache2/sites-enabled/website.conf และ /etc/apache2/httpd.conf เป็นต้น) และเพิ่มสิ่งต่อไปนี้เข้ากับ VirtualHost ของคุณ:
# Optionally load the headers module:
LoadModule headers_module modules/mod_headers.so
<VirtualHost 67.89.123.45:443>
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
</VirtualHost>
https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
หากต้องการเปลี่ยนเส้นทางhttp
คำขอทั้งหมดไปที่https
คุณสามารถใช้:
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]
หากไม่ได้เปิดใช้งาน mod-rewrite และคุณใช้ apache 2.4 คุณสามารถใช้คำสั่งRedirect
ด้านในif
เพื่อเปลี่ยนเส้นทางhttp
คำขอไปยังhttps
การร้องขอไปยัง
Apache 2.4
<if "%{HTTPS} !~ /on/">
Redirect / https://www.example.com/
</if>
หากคุณอยู่ในสถานการณ์ที่คุณไม่สามารถเข้าถึงการกำหนดค่า apache โดยตรงสำหรับเว็บไซต์ของคุณซึ่งแพลตฟอร์มโฮสต์จำนวนมากยังคงถูก จำกัด ในลักษณะนี้ดังนั้นฉันขอแนะนำวิธีการสองขั้นตอน เหตุผลที่ Apache ทำเอกสารด้วยตนเองว่าคุณควรใช้ตัวเลือกการกำหนดค่าก่อนอื่น mod_rewrite สำหรับ HTTP to HTTPS
ก่อนอื่นตามที่กล่าวไว้ข้างต้นคุณต้องตั้งค่ากฎ. htaccess mod_rewrite ของคุณ:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
จากนั้นในไฟล์ PHP ของคุณ (คุณต้องทำสิ่งนี้ไม่ว่ามันจะเหมาะสมกับสถานการณ์ของคุณหรือไม่เว็บไซต์บางแห่งจะส่งคำขอทั้งหมดผ่านไฟล์ PHP ไฟล์เดียวส่วนเว็บไซต์อื่น ๆ จะให้บริการหน้าต่างๆตามความต้องการและคำขอของพวกเขา ):
<?php if ($_SERVER['HTTPS'] != 'on') { exit(1); } ?>
ข้อมูลข้างต้นจำเป็นต้องเรียกใช้ก่อนที่จะมีรหัสที่อาจเปิดเผยข้อมูลที่ปลอดภัยในสภาพแวดล้อมที่ไม่ปลอดภัย ดังนั้นเว็บไซต์ของคุณใช้การเปลี่ยนเส้นทางอัตโนมัติผ่าน HTACCESS และ mod_rewrite ในขณะที่สคริปต์ของคุณทำให้มั่นใจได้ว่าไม่มีการแสดงผลใด ๆ เมื่อไม่ได้เข้าถึงผ่าน HTTPS
ฉันเดาว่าคนส่วนใหญ่ไม่คิดเช่นนี้ดังนั้น Apache แนะนำให้คุณไม่ใช้วิธีนี้หากเป็นไปได้ อย่างไรก็ตามจะใช้เวลาตรวจสอบเพิ่มเติมในตอนท้ายของการพัฒนาเพื่อให้แน่ใจว่าข้อมูลผู้ใช้ของคุณปลอดภัย หวังว่านี่จะช่วยให้คนอื่นที่อาจต้องใช้วิธีการที่ไม่แนะนำเนื่องจากข้อ จำกัด ในการสิ้นสุดบริการโฮสติ้งของเรา
ผ่าน. htaccess สิ่งนี้จะช่วยได้
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
นอกจากนี้อ้างถึงนี้เพื่อดูรายละเอียดเพิ่มเติม วิธีการเปลี่ยนเส้นทาง Http Https
นอกจากว่าคุณต้องการ mod_rewrite สำหรับสิ่งอื่น ๆ การใช้ Apache core IF directive นั้นสะอาดและเร็วขึ้น:
<If "%{HTTPS} == 'off'">
Redirect permanent / https://yoursite.com/
</If>
คุณสามารถเพิ่มเงื่อนไขเพิ่มเติมในคำสั่ง IF เช่นให้แน่ใจว่าเป็นโดเมนมาตรฐานเดียวโดยไม่มีคำนำหน้า www:
<If "req('Host') != 'myonetruesite.com' || %{HTTPS} == 'off'">
Redirect permanent / https://myonetruesite.com/
</If>
ความเฉื่อยมีความคุ้นเคยเป็นอย่างมากในการใช้ mod_rewrite สำหรับทุกสิ่ง แต่ดูว่ามันเหมาะกับคุณหรือไม่
ข้อมูลเพิ่มเติม: https://httpd.apache.org/docs/2.4/mod/core.html#if
หากต้องการดูในทางปฏิบัติ (ลองโดยไม่ต้องใช้ www หรือ https: // หรือกับ. net แทน. com): https://nohodental.com/ (เว็บไซต์ที่ฉันกำลังทำงานอยู่)
นำรหัสนี้มาให้คุณไฟล์. htaccess เปลี่ยนเส้นทาง HTTP เป็น HTTPS โดยอัตโนมัติ
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
ฉันพบวิธีการบังคับให้ทุกหน้าของไซต์เปลี่ยนเส้นทางจาก http เป็น analog ของหน้าเว็บใน https ที่เหมาะกับฉัน
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Redirect 301 / https://example.com/
(ทำงานสำหรับฉันเมื่อไม่มีคำตอบข้างต้นทำงาน)
โบนัส:
ServerAlias www.example.com example.com
(แก้ไข https: // www .example.com ไม่พบ)
สิ่งนี้จะเปลี่ยนเส้นทาง URL ทั้งหมดไปที่ https และ www
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTPS_HOST} !^www.example.com$ [NC,OR]
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
หากคุณต้องการที่จะทำมันจากเซิร์ฟเวอร์ Tomcat ทำตามขั้นตอนด้านล่าง
ในเซิร์ฟเวอร์ HTTP ของ Apache Tomcat (8.5.x) แบบสแตนด์อโลนวิธีกำหนดค่าได้อย่างไรหากผู้ใช้พิมพ์ www.domain.com พวกเขาจะถูกส่งต่อไปยังเว็บไซต์ https (www.domain.com) โดยอัตโนมัติ
วิธีการ 2 ขั้นตอนของการรวมต่อไปนี้ใน [Tomcat_base] /conf/web.xml ของคุณก่อนแท็กปิด
step 1:
<security-constraint>
<web-resource-collection>
<web-resource-name>HTTPSOnly</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
และการตั้งค่าการตั้งค่าตัวเชื่อมต่อ [Tomcat_base] /conf/server.xml:
step 2:
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="443"/>
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="[keystorelocation]" type="RSA" />
</SSLHostConfig>
</Connector>
หมายเหตุ: หากคุณทำการตั้งค่า https แล้วและพยายามเปลี่ยนเส้นทางให้ทำตามขั้นตอนที่ 1 เท่านั้น
หากคุณใช้ Apache mod_rewrite เป็นทางออกที่ง่ายที่สุดและมีเอกสารจำนวนมากทางออนไลน์เกี่ยวกับวิธีการทำเช่นนั้น ตัวอย่างเช่น: http://www.askapache.com/htaccess/http-https-rewriterule-redirect.html
ข้อแตกต่างของปัญหานี้คือเมื่อโหลดบาลานเซอร์เข้าสู่การเล่น
สถานการณ์มีดังนี้: - ปริมาณข้อมูลจากเบราว์เซอร์ไปยัง Load Balancer และย้อนกลับคือ (ควรเป็น) HTTPS - ปริมาณข้อมูลระหว่าง Load Balancer และ WebServer จริงคือ HTTP
ดังนั้นเซิร์ฟเวอร์ขอตัวแปรทั้งหมดใน PHP หรือ Apache แสดงว่าการเชื่อมต่อเป็นเพียง HTTP และไดเรกทอรี HTTP และ HTTPS บนเซิร์ฟเวอร์เหมือนกัน
RewriteCondition ในคำตอบที่อนุมัติไม่ทำงาน มันให้ทั้งวงหรือไม่ทำงาน
คำถามคือทำอย่างไรถึงจะทำให้โหลดบาลานเซอร์ทำงานได้
(หรือ Load Balancer ถูกตั้งค่าผิดซึ่งเป็นสิ่งที่ฉันหวังไว้เพราะจากนั้นฉันสามารถย้ายปัญหาไปที่ บริษัท WebHosting :-))
หากคุณกำลังใช้ตัวโหลดยืดหยุ่นของ Amazon Web Services ซึ่งยอมรับการรับส่งข้อมูล https และกำหนดเส้นทางไปยังเซิร์ฟเวอร์ของคุณด้วย http วิธีที่ถูกต้องในการเปลี่ยนเส้นทางการรับส่งข้อมูล HTTP ทั้งหมดไปยัง https อธิบายไว้ที่นี่ https://aws.amazon co.th / premiumsupport / ความรู้ / ศูนย์การเปลี่ยนเส้นทาง-http-https-ELB
ใช้ส่วนหัว X-Forwarded-Proto (มี http หรือ https) ซึ่งจะรวมอยู่ในคำขอ HTTP จาก load balancer ดังที่อธิบายไว้ที่นี่: https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/x- ส่งต่อ-headers.html
ในไฟล์ httpd.conf:
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
</VirtualHost>
หรือในรูทไฟล์. htaccess ของคุณ:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
โบนัส: มันจะไม่พยายามเปลี่ยนเส้นทางการรับส่งข้อมูล http บนเครื่องพัฒนาท้องถิ่นของคุณ
มันเหมาะกับฉัน:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
และตัวอย่างเช่นhttp: // server / foo? email = someone% 40example.comเปลี่ยนเส้นทางโดยปกติโดยไม่มีปัญหาใด ๆ ไฟล์. htaccess อยู่ในโฟลเดอร์รูทของเว็บไซต์ (เช่นชื่อ public_html) เป็นไปได้ที่จะใช้ RewriteCond% {SERVER_PORT}! ^ 443 $แทนRewriteCond% {HTTPS}!
httpd
ไม่ใช่กับ PHP