Điểm:1

Apache mod_rewrite/mod_redirect: chuyển đổi URL có tham số truy vấn thành URL thân thiện với SEO. một số tham số truy vấn bị bỏ qua

lá cờ cl

Như trên.

có thể được giải thích tốt nhất với một ví dụ:

Tôi đã xem/tìm kiếm trên mạng nhưng không có gì giống với những gì tôi đang cố gắng thực hiện. Cảm ơn bạn.

Điểm:1
lá cờ kz

Bạn có thể làm như sau bằng cách sử dụng mod_rewrite:

Viết LạiEngine Trên

RewriteCond %{QUERY_STRING} (?:^|&)p1=([^&]+)
RewriteCond %1@%{QUERY_STRING} ^([^@]+)@(?:|.*&)p2=([^&]*)
RewriteRule ^/?(my-page)$ /$1/%1/%2 [QSD,R=302,L]

đầu tiên điều kiện, tình trạng, trạng thái nắm bắt giá trị của p1 và chuyển cái này sang cái thứ hai điều kiện, tình trạng, trạng thái điều đó cũng nắm bắt được giá trị của p2. Sau đó chúng được sử dụng trong thay thế chuỗi như %1%2 phản hồi tương ứng.

Các tham số URL có thể xuất hiện theo bất kỳ thứ tự nào.

@ (trong điều kiện thứ hai) chỉ là một ký tự tùy ý không xuất hiện trong v1 và so được sử dụng như một dấu phân cách giữa v1 và chuỗi truy vấn khi tìm kiếm p2.

Tất cả các tham số URL khác (tức là. p3..pN) bị bỏ qua (và bị loại bỏ).

Cả hai p1p2 phải tồn tại với một giá trị không trống để chuyển hướng xảy ra.

CẬP NHẬT: p1 phải tồn tại với một giá trị không trống (nếu không, chuyển hướng kết quả sẽ không rõ ràng). p2 cũng phải tồn tại, nhưng giá trị có thể là trống rỗng. Tôi cũng đã cập nhật biểu thức chính quy để nó cũng cho phép chuỗi truy vấn được cho là không đúng định dạng (nhưng vẫn hợp lệ) trong đó dấu phân cách tham số URL (&) xảy ra trước p2 ở đầu chuỗi truy vấn. ví dụ. /trang của tôi?&p2=&p1=v1 vẫn sẽ được chuyển hướng đến /my-trang/v1/.

Các QSD cờ loại bỏ chuỗi truy vấn ban đầu khỏi yêu cầu.

Tùy thuộc vào nơi các chỉ thị này đang được sử dụng (ví dụ. danh mục hoặc người phục vụ bối cảnh) và cách URL cuối cùng được định tuyến, bạn có thể cần thêm một điều kiện ban đầu để đảm bảo rằng chỉ những yêu cầu trực tiếp (trái ngược với yêu cầu viết lại) mới được xử lý.

Ví dụ: thêm phần sau đây làm điều kiện đầu tiên nếu được yêu cầu:

RewriteCond %{ENV:REDIRECT_STATUS} ^$
:

CẬP NHẬT:

p1 và p2 là bắt buộc. p3 là tùy chọn.

Bạn có thể thay đổi ở trên như sau:

RewriteCond %{QUERY_STRING} (?:^|&)p1=([^&]+)
RewriteCond %1@%{QUERY_STRING} ^([^@]+)@(?:|.*&)p2=([^&]+)
# P3 là bắt buộc và phải có giá trị
RewriteCond %1/%2/@%{QUERY_STRING} ^([^@]+)@(?:|.*&)p3=([^&]+) [OR]
# HOẶC p3 bị bỏ qua hoặc không có giá trị
RewriteCond %1/%2 (.+)
RewriteRule ^/?(my-page)$ /$1/%1%2 [QSD,R,L]

Điều kiện thứ 2 bây giờ đảm bảo có một giá trị cho p2 tham số (tức là v2) - không được để trống.

Sau đó, điều kiện thứ 3 sẽ kiểm tra đối tượng không trống p3 tham số HOẶC điều kiện thứ 4 chỉ đơn giản là nắm bắt các giá trị khi p3 tham số trống hoặc bị bỏ qua hoàn toàn.

Chuyển hướng kết quả bỏ qua dấu gạch chéo khi p3 không phải bây giờ. Ví dụ: chuyển hướng kết quả là /mypage/v1/v2 hoặc /mypage/v1/v2/v3. (Dấu gạch chéo sau có thể xảy ra trên /mypage/v1/v2/ được tránh.)

trong trận chung kết thay thế chuỗi, các giá trị của %1%2 phản hồi có một chút khác biệt so với trước đây. Chúng không còn chứa từng giá trị (tức là. v1v2). Thay thế %1 chứa v1/v2%2 chứa một trong hai /v3 (bao gồm cả tiền tố gạch chéo) hoặc là trống rỗng (khi nào p3 trống hoặc bị bỏ qua).

lá cờ cl
để tôi thử. Cảm ơn
lá cờ kz
@mrjayviper Tôi đã cập nhật câu trả lời của mình để cho phép tham số _empty_ (nhưng vẫn còn) `p2`. Và để cho phép một chuỗi truy vấn được cho là không đúng định dạng (nhưng vẫn hợp lệ) trong đó dấu phân cách tham số URL (`&`) xuất hiện ngay trước `p2` ở đầu chuỗi truy vấn. ví dụ. `/my-page?&p2=&p1=v1` (trường hợp cạnh).
lá cờ cl
Tôi mới nhận ra p3 bây giờ là tùy chọn. tôi cần thực hiện những thay đổi nào đối với những thay đổi bổ sung? vì vậy p1 và p2 là bắt buộc. p3 là tùy chọn. Cảm ơn bạn.

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