Điểm:1

Tự động xóa dấu gạch chéo gốc của trang web (sự cố)

lá cờ jp

theo tiêu đề, khi tôi nhập URL trang web của mình theo cách thủ công (ví dụ ở cuối chủ đề), dấu gạch chéo ở cuối tên miền sẽ tự động bị xóa. Tôi buộc phải chuyển hướng SSL và kích hoạt Apache ModRewrite trong .htaccess và đây là nội dung tệp (như bạn có thể thấy, nó được tạo tự động từ Prestashop CMS (1.7.x)):

    # ~~start~~ Đừng xóa bình luận này, Prestashop sẽ tự động giữ mã bên ngoài bình luận này khi .htaccess được tạo lại
# .htaccess tự động được tạo bởi giải pháp mã nguồn mở thương mại điện tử PrestaShop
# http://www.prestashop.com - http://www.prestashop.com/forums
 
<IfModule mod_rewrite.c>
<IfModule mod_env.c>
ĐặtEnv HTTP_MOD_REWRITE Bật
</IfModule>
 
RewriteEngine bật
 
 
#Miền: www.example.com
Quy tắc viết lại . - [E=REWRITEBASE:/]
RewriteRule ^api(?:/(.*))?$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]
 
# Hình ảnh
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/ p/$1/$1$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ % {ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/ .+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0 -9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-] *)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [ L]
RewriteCond %{HTTP_HOST} ^www.example.com$
Quy tắc viết lại ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a- zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1 $2$3$4$5$6$7$8.jpg [L]
RewriteCond %{HTTP_HOST} ^www.example.com$
Quy tắc viết lại ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9] )(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/ $4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteCond %{HTTP_HOST} ^www.example.com$
Quy tắc viết lại ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9] )([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p /$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV :REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# AlphaImageLoader cho IE và hộp ưa thích
RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1,$2 [L]
 
# Điều phối
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
Quy tắc viết lại ^.*$ - [NC,L]
RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]
</IfModule>
 
Ứng dụng AddType/vnd.ms-fontobject .eot
Phông chữ AddType/ttf .ttf
Phông chữ AddType/otf .otf
Ứng dụng AddType/phông chữ woff .woff
Phông chữ AddType/woff2 .woff2
<IfModule mod_headers.c>
<FilesMatch "\.(ttf|ttc|otf|eot|woff|woff2|svg)$">
Bộ tiêu đề Kiểm soát truy cập-Cho phép-Xuất xứ "*"
</FilesMatch>
</IfModule>
 
#Nếu chế độ viết lại không được bật
ErrorDocument 404 /index.php?controller=404
 
# ~~end~~ Đừng xóa bình luận này, Prestashop sẽ tự động giữ mã bên ngoài bình luận này khi .htaccess được tạo lại

Ví dụ:

 - www.example.com/contacts -> https://www.example.comcontacts [SAI]   
 - example.com/contacts -> https://www.example.comcontacts [SAI]
 - http://example.com/contacts -> https://www.example.comcontacts [SAI]
   
 - https://example.com/contacts -> https://www.example.com/contacts [OK]
 - https://www.example.com/contacts -> https://www.example.com/contacts [OK]

Bất kỳ trợ giúp được đánh giá cao.

lá cờ kz
Vui lòng bao gồm nội dung của tệp `.htaccess` trong câu hỏi của bạn, không phải dưới dạng liên kết bên ngoài. Cũng bao gồm các ví dụ có liên quan, nếu không, câu hỏi như đã đăng không phải là một câu hỏi.
lá cờ kz
"Tôi buộc phải chuyển hướng SSL" - Điều này có nghĩa là gì? Đây là đâu? Có vẻ như nó không nằm trong tệp `.htaccess` được liên kết. Trên thực tế, dường như không có bất kỳ "chuyển hướng" nào trong mã bạn đã đăng? Từ các ví dụ của bạn, có vẻ như đó có thể là vấn đề chuyển hướng HTTP sang HTTPS (tức là "chuyển hướng bắt buộc SSL" - bất kể đó là gì).
lá cờ jp
@MrWhite, với "Bắt buộc chuyển hướng SSL", ý tôi là một tính năng trong CMS cho phép sử dụng SSL cho tất cả các trang của trang web. Bạn nói đúng, trong .htaccess đó không có chuyển hướng SSL cho tất cả các yêu cầu http. Bạn có nghĩ rằng nó có thể là vấn đề? Tôi nên thêm nó vào .htaccess của mình như thế nào?
Điểm:0
lá cờ kz

Như đã đề cập trong các nhận xét, không có gì trong cấu hình bạn đã đăng có thể gây ra điều này. Không có chuyển hướng nào trong cấu hình bạn đã đăng. Đây rất có thể là lỗi cấu hình trong CMS (Prestashop) của bạn.

Có vẻ như sự cố xảy ra với chuyển hướng HTTP sang HTTPS đang xóa dấu gạch chéo ở đầu đường dẫn URL (ngay sau tên máy chủ).

Tuy nhiên, bạn có thể "giải quyết" sự cố này bằng cách triển khai chuyển hướng HTTP sang HTTPS (và không phải www sang www) trong .htaccess - xảy ra trước khi CMS của bạn có thể làm bất cứ điều gì. Vì vậy, CMS của bạn không cần chuyển hướng yêu cầu.

Ví dụ: giả sử bạn có một máy chủ tiêu chuẩn hợp lý, trong đó SSL được quản lý bởi máy chủ ứng dụng (không có proxy SSL như Cloudflare, v.v.), thì bạn có thể thực hiện một số thao tác như sau ở trên cùng của .htaccess tập tin, trước khi # ~~bắt đầu~~ bình luận.

# Chuyển hướng không phải www sang www + HTTPS
RewriteCond %{HTTP_HOST} ^(example\.com) [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L]

# Chuyển hướng HTTP sang HTTPS (các yêu cầu còn lại)
RewriteCond %{HTTPS} =tắt
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Lưu ý: Kiểm tra trước với chuyển hướng 302 (tạm thời) để tránh các sự cố tiềm ẩn về bộ nhớ đệm.


CẬP NHẬT:

Tôi đã cố gắng thêm các dòng bạn đã viết ở trên nhưng không có gì thay đổi.

Điều này có nghĩa là bạn có HTTP sang HTTPS không đúng định dạng trong chính cấu hình máy chủ (thực thi trước đó .htaccess)

<VirtualHost *:80>
ServerName www.example.com
Redirect permanent / https://www.example.com
</VirtualHost>

Nếu đây là cấu hình thực tế của bạn, thì bạn đang thiếu dấu gạch chéo ở cuối trên URL mục tiêu! Điều này sẽ dẫn đến chuyển hướng không đúng định dạng (thiếu dấu gạch chéo sau tên miền) mà bạn đang thấy.

Nó phải là:

Chuyển hướng vĩnh viễn / https://www.example.com/

Bạn sẽ cần đảm bảo rằng bộ nhớ đệm của trình duyệt sạch trước khi kiểm tra, vì chuyển hướng sai sẽ được lưu vào bộ đệm.

lá cờ jp
Cảm ơn bạn rất nhiều vì sự giúp đỡ và giải thích. Tôi đã cố gắng thêm các dòng bạn đã viết ở trên nhưng không có gì thay đổi. Các quy tắc đã được thực thi vì tôi có thể thấy giao thức HTTP được thay đổi bằng HTTPS nhưng tuy nhiên, dấu gạch chéo gốc của trang web đã bị xóa. Tại thời điểm này, phải là một vấn đề cấu hình CMS, phải không?
lá cờ kz
@simone_meh Nhưng nếu bạn yêu cầu trực tiếp URL HTTPS thì nó vẫn hoạt động tốt! Điều này có nghĩa là bạn có HTTP sang HTTPS không đúng định dạng trong chính cấu hình máy chủ (thực thi trước `.htaccess`)? Bạn có quyền truy cập vào cấu hình máy chủ không?
lá cờ jp
chắc chắn, tôi đang sử dụng VPS linux. ``` Tên máy chủ www.example.com Chuyển hướng vĩnh viễn / https://www.example.com ``` Dấu gạch chéo bị thiếu khi chuyển hướng vĩnh viễn có thể là vấn đề?
lá cờ kz
@simone_meh Có vẻ như đó là lỗi trong chuyển hướng máy chủ (trừ khi nhận xét thiếu nội dung nào đó). Bạn đang thiếu dấu gạch chéo ở cuối URL mục tiêu!? Tôi đã cập nhật câu trả lời của mình.
lá cờ jp
Đã giải quyết! Cảm ơn bạn rất nhiều!

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.