Làm thế nào để nhận được đường dẫn giới thiệu yêu cầu?


82

Tôi cần đường dẫn của người giới thiệu. Tôi không muốn tên miền. Ví dụ, nếu người giới thiệu là http://www.google.com/adsensetôi muốn /adsense.

Câu trả lời:


138

request.referertrả về một chuỗi, nhưng bạn có thể sử dụng Mô-đun URI của Ruby để bọc nó và sau đó chỉ cần yêu cầu nó cho đường dẫn của nó:

if URI(request.referer).path == '/adsense'

4
Tôi đang sử dụng dòng URI (request.referer) đó và tiếp tục nhận được lỗi URI :: InvalidURIError: bad URI (không phải là URI?). Bất cứ ý tưởng gì này có thể được?
kateray

Thật khó để nói nó có thể là gì nếu không có thêm thông tin. Hãy thử in chỉ request.referervào nhật ký để xem tại sao Ruby có thể không thích nó. (Tái bút: Bạn có thể muốn đặt câu hỏi của mình dưới dạng một câu hỏi riêng biệt, thay vì như một nhận xét về câu trả lời cho một câu hỏi khác. :-))
chadoh

1
Kiểm tra câu hỏi này để tìm hiểu thêm về URI::InvalidURIError.
James Chevalier

Thật kỳ lạ, liên kết giới thiệu có thể là một URI không hợp lệ ngay cả khi nó không trống. Tôi đã phát hiện ra điều này với một liên kết giới thiệu có chứa '|', làm tăng URI :: Không hợp lệURIError Tôi đang gói URI.Parse trong một khối bắt đầu / cứu / kết thúc.
tomf

28

Bạn có thể truy cập giới thiệu với

request.referer

3
Nhưng liên kết giới thiệu cung cấp url đầy đủ. tôi cần con đường
rails101

2
Cảm ơn bạn về liên kết hữu ích, @Fivell. Tôi đã thêm một câu trả lời với thông tin từ nó vào chính chuỗi này để những khách truy cập trong tương lai không gặp rắc rối với liên kết thối.
chadoh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.