Điểm:1

Liên kết ErrorDocument và extension less không hoạt động cùng nhau

lá cờ cn

Trên trang web của tôi, tôi có đoạn mã sau để bỏ qua phần mở rộng của các trang php

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]

Tôi cũng đã thêm mã này để hiển thị các trang 404 tùy chỉnh

ErrorDocument 404 /404

Cả hai đều hoạt động độc lập nhưng không hoạt động khi được sử dụng cùng nhau.Khi tôi truy cập một liên kết giả như www.mydomain.com/pagethatdontexist, Tôi muốn xem trang 404 của mình, thay vào đó tôi thấy lỗi Không tìm thấy tệp mà tôi đoán là do máy chủ, vì vậy rõ ràng tôi nhận được 404 trên 404.

Tôi đã thử di chuyển LỗiTài Liệu mã xóa phần mở rộng bên trên và bên dưới, đã thử /404.php cũng. Tôi cũng đã thử tạo một ngoại lệ cho 404 như

RewriteCond %{REQUEST_URI} !^/404.php$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]

Không có gì hoạt động.

Chỉnh sửa: Khi mã mở rộng bị xóa và tôi truy cập www.mydomain.com/pagethatdontexist Tôi thấy trang 404 của tôi. Nhưng nếu tôi đến thăm www.mydomain.com/pagethatdontexist.php Tôi thấy lỗi không tìm thấy tệp nhạt nhẽo từ máy chủ. Có lẽ nó có thể đưa ra manh mối về những gì đang xảy ra.

Điểm:0
lá cờ kz

Tôi đoán là bạn đang sử dụng máy chủ LiteSpeed ​​chứ không phải Apache? Điều này sẽ "hoạt động" trên Apache, nhưng không phải LiteSpeed ​​vì cách các biến máy chủ hoạt động không phải được cập nhật giữa các yêu cầu nội bộ.

Tuy nhiên, không cần (và bạn không nên) bỏ qua phần mở rộng tệp trên LỗiTài Liệu bản thân chỉ thị. URL không có phần mở rộng là "mỹ phẩm" cho người dùng. ErrorDocument hoàn toàn bị ẩn khỏi người dùng. Tuy nhiên, nếu bạn bỏ qua phần mở rộng tệp trên LỗiTài Liệu thì nó sẽ kích hoạt một thao tác viết lại nội bộ bổ sung, sau yêu cầu con nội bộ đối với tài liệu lỗi - điều này nên tránh.

Vì vậy, bạn nên bao gồm phần mở rộng tệp trong LỗiTài Liệu chỉ thị:

ErrorDocument 404 /404.php
Whip avatar
lá cờ cn
Tôi đang sử dụng Apache. Nó nên và nó hoạt động trên xampp nhưng không hoạt động trên máy chủ của tôi. Có vẻ như `ErrorDocument` bị bỏ qua khi có mã xóa tiện ích mở rộng. Đây không phải là hai chỉ thị hoàn toàn riêng biệt sao? Điều gì có thể can thiệp ở đây?
Điểm:0
lá cờ cn

Tôi nghĩ regex của bạn không khớp với những gì bạn muốn. Với những điều sau đây tôi có thể xử lý url như:

  • /trang của tôi
  • /mypage/myid

Biểu thức chính quy:

    RewriteEngine Bật # Mô-đun kích hoạt Viết lại
    RewriteRule ^/(\w+)\/?$ /$1.php [NC,L]
    RewriteRule ^/(\w+)\/(\d+)$ /$1.php?id=$2

Đă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.