Điểm:0

Htaccess để viết lại URL với hai tham số

lá cờ cn

Tôi muốn viết lại loại URL này

https://mywebsite.com/content/page.html?id=12&title=my-page-title

đến

https://mywebsite.com/12/my-page-title.html

Sử dụng https://createit.net/mod-rewrite/ tôi có quy tắc sau:

Viết LạiEngine Trên
RewriteRule ^([^/]*)/([^/]*)\.html$ /content/page.html?id=$1&title=$2 [L]

Nhưng khi thử nghiệm trên htaccess.madewithlove.com/ tôi nhận được điều này:

Url mới là https://mywebsite.com/content/page.html?id=content&title=page
cat15ets avatar
lá cờ cn
Đó là quy tắc được đưa ra bởi trình tạo quy tắc Viết lại. Tôi cũng đã thử các quy tắc khác nhau mà không có kết quả. Tôi đã cố gắng hiểu cách hoạt động của các quy tắc viết lại, nhưng tôi không tìm thấy bất kỳ hướng dẫn nào hữu ích cho mình.Tất cả họ dường như bỏ lỡ những điểm chính trong việc giải thích cách thức hoạt động của nó hoặc đó chỉ là vấn đề với logic của tôi ...
Tilman Schmidt avatar
lá cờ bd
(a) Tôi đã xem trang web máy phát điện mà bạn nêu tên. Bạn giải thích sai những gì nó đề xuất để làm. Khi nó nói "chuyển URL động thành URL tĩnh thân thiện với công cụ tìm kiếm" thì điều đó có nghĩa là từ quan điểm của khách truy cập. (b) Hoạt động của quy tắc viết lại đơn giản là: cố gắng khớp URL đến với biểu thức chính quy được cung cấp làm đối số đầu tiên cho câu lệnh `RewriteRule`, và nếu đúng như vậy, hãy thay thế nó bằng chuỗi được cung cấp làm đối số thứ hai.
cat15ets avatar
lá cờ cn
Tôi không hiểu những gì bạn nói tôi đã làm sai. Truy cập: https://www.generateit.net/mod-rewrite/ , đặt https://mywebsite.com/content/page.html?id=12&title=my-page-title vào trường URL và nhấp vào VIẾT LẠI URL
cat15ets avatar
lá cờ cn
Mod Rewrite Generator có thể được sử dụng để biến URL động thành URL tĩnh thân thiện với công cụ tìm kiếm. Các URL tĩnh thường xếp hạng tốt hơn trong các công cụ tìm kiếm so với các URL động phức tạp dài với nhiều tham số, chúng dễ lập chỉ mục hơn ngay từ đầu và chúng cũng thân thiện hơn với người dùng cuối. Mô-đun apache mod_rewrite chuyển đổi url ở định dạng nhất định sang định dạng khác và có thể rất hữu ích trong việc giúp trang web có nội dung động được lập chỉ mục. Sử dụng công cụ này, bạn có thể chuyển đổi các URL động dài thành các URL tĩnh ngắn.
cat15ets avatar
lá cờ cn
Không biết những gì tôi đã không hiểu từ đó. Tôi muốn một **Quy tắc** sẽ biến **URL động dài** thành **URL tĩnh ngắn**
Tilman Schmidt avatar
lá cờ bd
Xác định ý của bạn khi 'biến thành'.
cat15ets avatar
lá cờ cn
Từ trang web của họ: **Sử dụng công cụ này, bạn có thể chuyển đổi các URL động dài thành các URL tĩnh ngắn. ** Chuyển đổi, biến thành, viết lại, mang nó theo cách bạn muốn. Tôi có thể quá ngu ngốc cho điều này hoặc có những thứ khác đang diễn ra ở đây ...
Tilman Schmidt avatar
lá cờ bd
Hãy để chúng tôi [tiếp tục cuộc thảo luận này trong cuộc trò chuyện](https://chat.stackexchange.com/rooms/133536/discussion-between-tilman-schmidt-and-cat15ets).
Điểm:1
lá cờ bd

Thuật ngữ "viết lại" dùng để chỉ một quá trình có đầu vào URL được yêu cầu bởi khách truy cập trang web của bạn và vì nó đầu ra URL được chuyển đến CMS của bạn để tạo trang được yêu cầu.

dịch vụ tại https://www.generateit.net/mod-rewrite/ tạo quy tắc viết lại cho phép truy cập các trang của bạn thông qua các URL có dạng

https://mywebsite.com/12/my-page-title.html

mặc dù hệ thống cơ bản mong đợi các URL có dạng

https://mywebsite.com/content/page.html?id=12&title=my-page-title

Nó làm điều đó bằng cách viết lại các đến sau này, đó chính xác là quy tắc viết lại được trích dẫn trong câu hỏi của bạn.

Để kiểm tra điều đó với dịch vụ tại https://htaccess.madewithlove.com/, bạn phải nhập

https://mywebsite.com/12/my-page-title.html

trong trường có nhãn "Điền vào url mà bạn đang áp dụng các quy tắc". Có vẻ như bạn đã nhập viết lại kết quả thay vào đó.

cat15ets avatar
lá cờ cn
Và tôi phải sử dụng quy tắc nào trong htaccess của mình để nhận **https://mywebsite.com/12/my-page-title.html** từ **https://mywebsite.com/content/page.html?id =12&title=my-page-title**
lá cờ kz
@cat15ets Bạn không làm điều đó trong `.htaccess`. Bạn phải thay đổi thủ công (hoặc trong CMS) các URL trong nguồn HTML của mình thành dạng `example.com/12/my-page-title.html`. Tuy nhiên, như đã nói, bạn có thể (tùy chọn) triển khai chuyển hướng bên ngoài để chuyển đổi các yêu cầu của bên thứ 3 từ `/content/page.html?id=12&title=my-page-title` thành URL chính tắc mong muốn (ví dụ: `/12 /my-page-title.html`) - nhưng điều này chỉ dành cho SEO, nếu bạn đã thay đổi cấu trúc URL hiện có đã được lập chỉ mục/liên kết đến. Điều này không bắt buộc đối với trang web của bạn để hoạt động với các URL chuẩn "đẹp" mong muốn.
Điểm:0
lá cờ cn

Cảm ơn RavinderSingh13, từ StackOverflow, đã giúp tôi viết mã.

để biến

https://mywebsite.com/pages/article.html?id=1&title=Title-Goes-Here

vào trong

https://mywebsite.com/pages/article/1/Title-Goes-Here

Sử dụng

RewriteEngine BẬT
##Chuyển hướng bên ngoài trong quy tắc trình duyệt tại đây....
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{THE_REQUEST} \s/([^/]*)/([^.]*)\.html\?id=([^&]*)&title=(\S+)\s [NC]
RewriteRule ^ /%1/%2/%3/%4? [R=301,L]

## Ghi nội bộ vào quy tắc tệp html tại đây....
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/?$ $1/$2.html?id=$3&title=$4 [QSA ,NC,L]

Ngoài ra, sau phần tử đầu, tôi phải đặt:

<base href="/" />

Nếu bạn có atricle.html trong thư mục chính, với htaccess, bạn cũng có thể sử dụng:

RewriteEngine bật
RewriteRule ^article/([0-9]+)/([0-9a-zA-Z_-]+)$ article.html?id=$1&title=$2 [NC,L] 

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