Lỗi 404 khi lưu post wordpress

Quảng cáo
Ads_ngang
Website dinhthuanit.com có bài Lỗi 404 khi lưu post wordpress

Lỗi này đều đặn xẩy ra khi bạn đăng nội dung tiếng anh. Sau khi bạn lưu nội dung post mới hoặc cập nhật post cũ lâu lâu bạn bị nhẩy đến trang 404 và hiện tượng này xẩy ra ngẫu nhiên không có căn cứ nào để nhận dạng khi nào thì lỗi đó bị lặp lại.

Sau khi tìm hiểu các bài viết trên mạng về nguyên do lỗi đăng tin này, mình đã biết lý do do ‘mod_security’ được cài đặt trên apache. Nếu trong nội dung post có chứa 1 số từ mà extension mod_security không cho phép, tỉ dụ như lệnh SQL “insert” thì sau khi nhấn nút Publish/update wordpress sẽ trả về trang 404 not found.
Giải pháp.

1. Tắt mod_security

Có nhiều gợi để tắt mod_security module bằng cách chèn rules vào file .htaccess

 #...    SecFilterEngine Off SecFilterPost Off       SetEnv MODSEC_ENABLE Off PassEnv MODSEC_ENABLE    #...  

Không may mắn, giải pháp trên không làm việc với một số hosting. Lúc này bạn cũng có thể có thể can thiệp sâu vào apache, chúng ta mở file httpd.conf và thấy hosting đang sử dụng mod_security2 đây là module mới nhất. Bạn tắt module này trong htaccess như sau:

 #...    SecFilterEngine Off SecFilterPost Off    #...  

Nếu tình huống cũng không hoạt động, chúng ta thi hành tiếp biện pháp dưới đây.

Sửa mod_security Rules

Sau một hồi tìm kiếm, kết quả mod_security 2 không còn được bổ trợ sửa đổi trong htaccess , bạn cần thay đổi rules thông qua file config.
Tìm file /usr/local/apache/conf/modsec2/exclude.conf và thêm đoạn dưới đây vào trên cùng.

    SecRuleRemoveById 300013 SecRuleRemoveById 300015 SecRuleRemoveById 300016 SecRuleRemoveById 300017     

WordPress sử dụng /wp-admin/post.php để lưu post và mod_security chặn những ký tự, từ không được phép bởi chỉ số rules: 300013, 300015, 300016, 300017. Khởi động lại Apache Server. Thử thêm đoạn mà trước đấy bạn bị chuyển sang 404 và cập nhật lại post một lần nữa chắc chắn sẽ thành công.

Tìm rule ID

Làm sao chúng ta biết rule nào để loại bỏ? bạn cũng có thể tìm thông tin này trong file log modsec_audit.log , mọi filter bị chặn sẽ có ghi lại trong file này.

 # your problem-post URL here... --2950df1e-H-- Message: Access denied with code 500 (phase 2). Pattern match "((select|grant|delete|insert|drop|alter|replace|truncate|update|create|rename|describe)[[:space:]]+[A-Z|a-z|0-9| *| |\,]+[[:space:]]+(from|into|table|database|index|view)[[:space:]]+ [A-Z|a-z|0-9|\*| |\,]|UNION SELECT.*\'.*\'.*,[0-9].*INTO.*FROM)" at REQUEST_BODY. [file "/usr/local/apache/conf/modsec2.user.conf"] [line "345"] [id "300013"] [rev "1"] [msg "Generic SQL injection protection"] [severity "CRITICAL"] Action: Intercepted (phase 2) #...  

Lọc bởi URL hoặc IP sẽ phát giác ra rules nào bị kích hoạt khi bạn cập nhật post. Ở tình huống trên URL của post trên bị chặn bởi rule “ 300013 “.

Lưu ý: kiểm tra log của http.conf, mod_security có thể phát giác thêm những lỗi khác từ đấy cấu hình hosting của bạn cho phù hợp nhu cầu sử dụng.

Bài viết Lỗi 404 khi lưu post wordpress được tổng hợp và biên tập bởi: dinhthuanit.com. Mọi ý kiến đóng góp và phản hồi vui lòng gửi Liên Hệ cho dinhthuanit.com để điều chỉnh. dinhthuanit.com xin cảm ơn.

Bài Viết Liên Quan


Bài Viết Khác


Quảng cáo
Ads_ngang