SSL .htaccess - Q đơn giản
Tôi thực sự ghét tập tin này ... Tôi chỉ mất 6,5 giờ để tìm ra điều này và với chứng khó đọc ADHD của tôi, điều đó thật không thể !! Tôi có một miền mà tôi đã mua cho SSL (hiện tại tôi phải đợi ssl để WWW bắt đầu nhưng hiện tại miền không có WWW hoạt động, ví dụ:
https://tomas.com
.Htaccess mà tôi có trong root hiện là:
RewriteEngine On
RewriteCond %{HTTP_HOST} tomas\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://tomas.com/$1 [R,L]
Và đoạn mã trên trên thực tế có kích hoạt SSL tốt. Vấn đề là, tôi có một vài tệp trong miền gốc nhưng một trong số chúng được gọi là:
hello.php (đặt tại: "tomas.com/hello.php")
Nếu tôi truy cập: http://tomas.com/helloTôi muốn nó hiển thị tệp đó (và trong thanh địa chỉ, nó sẽ hiển thị: "http://tomas.com/hello"). Trước khi có SSL, tôi có mã này bên dưới và nó hoạt động (nhưng không còn nữa):
RewriteRule ^([^/]*)/?(.*)$ $1.php
Có bất kỳ ý tưởng nào về toàn bộ .htaccess sẽ trông như thế nào không? : /
Tôi cũng đang cố gắng KÍCH CỤC nó để KHÔNG sử dụng www (vì vậy nếu họ làm điều đó nên được chuyển hướng đến một url không phải WWW) Cảm ơn bạn rất nhiều trước !!!!!!!!!!!!
Trả lời
Trước khi có SSL, tôi có mã này bên dưới và nó hoạt động (nhưng không còn nữa):
RewriteRule ^([^/]*)/?(.*)$ $1.php
Không chắc điều này đã "hoạt động" như thế nào trước đây, bản thân nó không hoàn chỉnh và làm được nhiều việc hơn mà chỉ cần thêm một .phpphần mở rộng. Bạn cần một cái gì đó để ngăn vòng lặp viết lại, vì nó hello.phpcũng khớp với mẫu ^([^/]*)/?(.*)$.
Thay vào đó, hãy thử cách sau, sau khi chuyển hướng HTTP sang HTTPS của bạn.
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule (.*) $1.php [L]
Điều này đầu tiên sẽ kiểm tra xem tệp có .phpphần mở rộng tệp tồn tại trước khi viết lại nội bộ vào tệp đó.
Ngoài ra , thay vào đó, bạn có thể chỉ bật MultiView nếu bạn không viết lại URL nào khác. Ví dụ: ở đầu tệp của bạn:
Options +MultiViews
Điều này sử dụng mod_negotiation để về cơ bản bật URL không có tiện ích mở rộng cho mọi thứ !