SSL .htaccess - คำถามง่ายๆ

Nov 13 2020

ฉันเกลียดไฟล์นี้จริงๆ ... ฉันใช้เวลา 6.5 ชั่วโมงในการพยายามคิดออกและด้วยโรคสมาธิสั้นของฉันมันเป็นไปไม่ได้เลย ฉันมีโดเมนที่ฉันซื้อสำหรับ SSL (ปัจจุบันฉันต้องรอให้ ssl เพื่อให้ WWW เริ่มใช้งาน แต่ตอนนี้โดเมนที่ไม่มี WWW ใช้งานได้เช่น:

https://tomas.com

. htaccess ที่ฉันมีในรูทปัจจุบัน:

RewriteEngine On
RewriteCond %{HTTP_HOST} tomas\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://tomas.com/$1 [R,L]

และโค้ดด้านบนเปิดใช้งาน SSL ซึ่งเป็นสิ่งที่ดี สิ่งนี้คือฉันมีไฟล์สองสามไฟล์ในโดเมนรูท แต่หนึ่งในนั้นเรียกว่า:

hello.php (อยู่ที่: "tomas.com/hello.php")

ถ้าฉันไปที่: http://tomas.com/helloฉันต้องการให้แสดงไฟล์นั้น (และในแถบที่อยู่ควรระบุว่า: "http://tomas.com/hello") ก่อน SSL ฉันมีรหัสนี้ด้านล่างและใช้งานได้ (แต่ไม่ใช่อีกต่อไป):

RewriteRule ^([^/]*)/?(.*)$ $1.php

มีความคิดอย่างไรว่า. htaccess ทั้งหมดควรมีลักษณะอย่างไร? : /

ฉันก็พยายามบังคับให้ไม่ใช้ www (ดังนั้นถ้าทำควรเปลี่ยนเส้นทางไปยัง URL ที่ไม่ใช่ WWW)ขอบคุณล่วงหน้า !!!!!!!!!!!!

คำตอบ

1 MrWhite Nov 14 2020 at 03:02

ก่อน SSL ฉันมีรหัสนี้ด้านล่างและใช้งานได้ (แต่ไม่ใช่อีกต่อไป):

RewriteRule ^([^/]*)/?(.*)$ $1.php

ไม่แน่ใจว่าก่อนหน้านี้ "ทำงาน" อย่างไรเนื่องจากยังไม่สมบูรณ์ในตัวเองและทำมากกว่านั้นเพียงแค่ต่อท้าย.phpส่วนขยาย คุณต้องมีบางอย่างเพื่อป้องกันการวนซ้ำเนื่องจากhello.phpตรงกับรูปแบบ^([^/]*)/?(.*)$ด้วย

ลองทำสิ่งต่อไปนี้แทนหลังจากเปลี่ยนเส้นทาง HTTP ไปยัง HTTPS

RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule (.*) $1.php [L]

ขั้นแรกให้ตรวจสอบว่าไฟล์ที่มี.phpนามสกุลไฟล์มีอยู่ก่อนที่จะเขียนใหม่ภายใน

หรือคุณสามารถเปิดใช้งาน MultiView แทนได้หากคุณไม่ได้ทำการเขียน URL ใหม่ ตัวอย่างเช่นที่ด้านบนของไฟล์ของคุณ:

Options +MultiViews

สิ่งนี้ใช้ mod_negotiation เพื่อเปิดใช้งาน URL ที่ไม่มีส่วนขยายโดยทั่วไปสำหรับทุกสิ่ง !