2008-10-01 39 views
10

Tôi đang kéo tóc ra trên những gì nên là một vấn đề điên rồ đơn giản. Chúng tôi đang chạy WebSphere IHS (Apache) thông qua một FIP ​​BigIP. BigIP đang thực hiện dịch https cho chúng tôi. Url của chúng tôi (thay đổi cho web, không hợp lệ) là https://superniftyserver.com/lawson/portal.mod_rewrite cho dấu gạch chéo vấn đề

Khi một người nào đó nhập chỉ mà không có dấu gạch chéo sau cổng, Apache giả định "cổng" là tệp chứ không phải thư mục. Khi Apache tìm ra nó là gì, nó sẽ gửi 301 Chuyển hướng vĩnh viễn. Nhưng vì Apache chỉ biết http, nó sẽ gửi URL là http://superniftyserver.com/lawson/portal/ và sau đó tạo ra các vấn đề.

Vì vậy, tôi đã thử thay đổi httpd.conf cấp máy chủ cho mod_rewrite, đây là một trong hàng tá kết hợp mà tôi đã thử.

RewriteEngine on RewriteRule ^/lawson/cổng thông tin (. *)/Lawson/portal/$ 1

Tôi cũng đã cố gắng RewriteRule ^/lawson/cổng thông tin $/lawson/portal/

Trong số nhiều người khác những điều ... Tôi đang thiếu gì?

+0

Đây có thể là một câu hỏi kỳ quặc, nhưng là BigIP thay đổi URL trong bất kỳ cách nào khác? – Powerlord

+0

Lúc đầu chúng tôi nghĩ như vậy, nhưng đó là một vấn đề dấu gạch chéo Apache cho chắc chắn ... –

Trả lời

6

Nếu bạn không thể có được một câu trả lời về cú pháp RewriteRule, đây là hai lựa chọn khác dành cho bạn: Viết một iRule tùy chỉnh trên BIGIP (xem F5 DevCentral) tìm 301 câu trả lời và chuyển đổi chúng thành SSL; để URL chuyển vào máy chủ WebSphere của bạn và thực hiện chuyển hướng có lập trình để gửi HTTPS. Tuy nhiên, vì F5 chấm dứt kết nối SSL, bạn phải đặt tiêu đề tùy chỉnh mà bạn định cấu hình (xem PQ86347) để Java request.getScheme() hoạt động như bạn mong đợi.

+0

Cảm ơn bạn rất nhiều, điều này trông giống như lựa chọn tốt nhất của tôi cho đến nay nếu tôi không thể có được rewriterule để làm việc .... –

0
LoadModule rewrite_module    modules/mod_rewrite.so 

đảm bảo dòng đó là nơi nào đó trong bạn httpd.conf nộp

+0

Cảm ơn, tôi nên có đề cập rằng ... Tôi không có dòng uncommented ... LoadModule rewrite_module modules/mod_rewrite.so –

5

Đã sửa lỗi!

SOL6912: Cấu hình một hồ sơ HTTP để ghi đè URL để chuyển hướng từ một máy chủ HTTP chỉ định giao thức HTTPS


Cập nhật: 8/7/07 00:00

Một ClientSSL máy chủ ảo thường được định cấu hình để chấp nhận các kết nối HTTPS từ máy khách, giải mã phiên SSL và gửi yêu cầu HTTP không được mã hóa tới máy chủ web.

Khi URI được yêu cầu không bao gồm dấu gạch chéo (dấu gạch chéo chuyển tiếp, chẳng hạn như /, ở cuối URI), một số máy chủ web tạo chuyển hướng lịch sự. Không có dấu gạch chéo, máy chủ web trước tiên sẽ xử lý tài nguyên được chỉ định trong URI dưới dạng tệp. Nếu không thể tìm thấy tệp, máy chủ web có thể tìm kiếm thư mục có cùng tên và nếu được tìm thấy, hãy gửi phản hồi chuyển hướng HTTP 302 trở lại máy khách bằng dấu gạch chéo. Chuyển hướng sẽ được trả lại cho máy khách trong chế độ HTTP thay vì HTTPS, khiến cho phiên SSL thất bại.

Sau đây là một ví dụ về cách phản ứng chuyển hướng HTTP 302 gây phiên SSL để thất bại:

· Để yêu cầu một phiên SSL, một loại sử dụng https://www.f5.com/stuff mà không có một dấu gạch chéo.

· Trình duyệt khách gửi yêu cầu SSL đến máy chủ ảo ClientSSL, nằm trên hệ thống BIG-IP LTM.

· Hệ thống LTM BIG-IP sau đó giải mã yêu cầu và gửi lệnh GET/stuff tới máy chủ web.

· Do tệp/tệp không tồn tại trên máy chủ web, nhưng thư mục/stuff/virtual tồn tại, máy chủ web gửi phản hồi chuyển hướng HTTP 302 cho thư mục nhưng gắn dấu gạch chéo vào tài nguyên. Khi máy chủ web gửi phản hồi chuyển hướng HTTP 302, nó chỉ định HTTP (không phải HTTPS).

· Khi khách hàng nhận được phản hồi chuyển hướng HTTP 302, nó sẽ gửi yêu cầu mới đến máy chủ ảo BIG-IP LTM chỉ định HTTP (không phải HTTPS). Kết quả là, kết nối SSL không thành công.

Cấu hình một hồ sơ HTTP để ghi đè URL

Trong BIG-IP LTM phiên bản 9.x bạn có thể cấu hình một hồ sơ HTTP để ghi đè URL để chuyển hướng từ một máy chủ HTTP chỉ định giao thức HTTPS. Để thực hiện việc này, hãy thực hiện quy trình sau:

  1. Đăng nhập vào tiện ích Cấu hình.

  2. Nhấp vào Lưu lượng truy cập cục bộ.

  3. Nhấp vào Hồ sơ.

  4. Nhấp vào nút Tạo.

  5. Nhập tên cho cấu hình.

  6. Chọn http từ trình đơn thả xuống Hồ sơ gốc.

  7. Trong Cài đặt, thiết lập Redirect Rewrite to All, Matching, hoặc nút, tùy thuộc vào cấu hình của bạn

Ví dụ:

o Chọn All để viết lại bất kỳ HTTP 301, 302, 303, 305 hoặc 307 chuyển hướng đến HTTPS

o Chọn đối sánh để ghi lại chuyển hướng khi đường dẫn và thành phần truy vấn URI của yêu cầu và chuyển hướng giống hệt nhau (ngoại trừ dấu gạch chéo)

o Chọn Node để viết lại chuyển hướng khi chuyển hướng URI có chứa một địa chỉ nút IP thay cho tên máy chủ, và bạn muốn hệ thống để thay đổi nó đến địa chỉ máy chủ ảo

  1. Nhấp vào Hoàn tất.

Bây giờ bạn phải liên kết hồ sơ HTTP mới với máy chủ ảo ClientSSL.

1

Hãy thử điều này:

# Trailing slash problem 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -d 
RewriteRule ^(.+[^/])$   https://<t:sitename/>$1/ [redirect,last] 
Các vấn đề liên quan