2012-07-25 47 views
11

Tôi có IP bên ngoài và tên máy chủ được định cấu hình cho máy của tôi.Apache httpd.conf để chuyển hướng ip đến tên máy chủ

Bên trong ứng dụng, tôi chỉ đang sử dụng tên miền để truy cập API. Vì vậy, khi tôi cố gắng truy cập vào các API của tôi thông qua địa chỉ IP, nó cho thấy 302 lỗi tạm thời được chuyển. Vì vậy, đối với yêu cầu (đối với Trang chủ) truy cập vào máy chủ có địa chỉ IP, nó sẽ chuyển hướng đến tên máy chủ.

Đó là, khi người dùng chạm https://XX.XX.XX.XX/main nó nên được chuyển hướng đến https://ayz-abc.mysite.com/main

Đối với điều này tôi đã cố gắng sử dụng chuyển hướng trong httpd.conf của apache.

<VirtualHost XX.XX.XX.XX> 

DocumentRoot "/var/www/html" 
#ServerName ayz-abc.mysite.com/ 

# Other directives here 
RewriteEngine On 
RewriteRule /.* https://ayz-abc.mysite.com/ [R] 

</VirtualHost> 

Tôi cũng đã thử với những điều sau

<VirtualHost *.portnum> 
DocumentRoot "/var/www/html" 
RewriteEngine On 
RewriteCond %{HTTPS} on 
RewriteRule https://XX.XX.XX.XX/main https://ayz-abc.mysite.com/main [R=301,L] 
</VirtualHost> 

Plsssss giúp tôi.

+0

302 không phải là lỗi. Nếu máy chủ đang phản hồi với 302 thì chuyển hướng sẽ hoạt động. Phản hồi HTTP từ máy chủ là gì? –

+0

Giao diện người dùng vẫn không được chuyển hướng đến tên máy chủ, nhưng các API được cấu hình nội bộ để trỏ tên máy chủ. vì vậy khi tôi cố gắng truy cập các API từ giao diện người dùng, yêu cầu API (với tên máy chủ) hiển thị 302 – Poppy

Trả lời

7

Ok. Bạn đang thiếu một điều kiện viết lại

<VirtualHost XX.XX.XX.XX> 

DocumentRoot "/var/www/html" 
#ServerName ayz-abc.mysite.com/ 

# Other directives here 
RewriteEngine On 
RewriteCond %{HTTP_HOST} !^ayz-abc.mysite.com$ 
RewriteRule /.* https://ayz-abc.mysite.com/ [R] 

</VirtualHost> 

Nếu bạn không bao gồm tình trạng này nó sẽ chuyển hướng ngay cả với các hostname

+1

Loại bỏ phần còn lại của URL bên cạnh HTTP_HOST. Tốt hơn để sử dụng RewriteRule^(. *) $ Https: //ayz-abc.mysite.com$1 [R = 301, L] – pogeybait

1

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

RewriteRule $ https://ayz-abc.mysite.com/ [L,R] 

Ngoài ra bạn có thể thấy viết lại nhật ký, see here

+0

Tôi đã thử sử dụng nó nhưng vẫn gặp lỗi tương tự. Ngoài ra Ankit, trong trình duyệt, nó vẫn chỉ hiển thị địa chỉ IP .. Nó không phải là tên máy chủ? – Poppy

+0

Chuyển hướng vĩnh viễn https: //xx.xx.xx.xx/main https://ayz-abc.mysite.com/main/ có được không? – Poppy

1

này làm việc cho tôi. Thêm các cấu hình trong httpd.conf của apache

CASE-1: khi người dùng chạm http://XX.XX.XX.XX/main hoặc http://ayz-abc.mysite.com/main nó nên được chuyển hướng đến https://ayz-abc.mysite.com/main

Cấu hình:

# 
# Use name-based virtual hosting. 
# 
NameVirtualHost *:80 
<VirtualHost *:80> 
ServerName XX.XX.XX.XX 
Redirect /main https://ayz-abc.mysite.com/main 
</VirtualHost> 

TRƯỜNG HỢP 2: Khi người dùng chạm https://XX.XX.XX.XX/main nó nên được chuyển hướng đến https://ayz-abc.mysite.com/main

Cấu hình:

NameVirtualHost *:443 
<VirtualHost *:443> 
DocumentRoot "/var/www/html" 
#Server Name 
ServerName XX.XX.XX.XX 
SSLEngine on 
SSLOptions +StrictRequire 
# Redirect to the specified URL 
Redirect /main https://ayz-abc.mysite.com/main 
<Directory /> 
SSLRequireSSL 
</Directory> 
.... 
.... 
</VirtualHost> 
0

Nếu bạn KHÔNG sử dụng API nhưng chỉ muốn trình duyệt và trình thu thập thông tin truy cập URL thay vì địa chỉ IP thì bạn có thể sử dụng RedirectPermanent.

<VirtualHost XX.XX.XX.XX> 

    RedirectPermanent/http://ayz-abc.mysite.com/ 

</VirtualHost> 

<VirtualHost XX.XX.XX.XX> 

    DocumentRoot "/var/www/html" 
    ServerName ayz-abc.mysite.com/ 

</VirtualHost> 

Có lợi thế là phản hồi trạng thái HTTP 301, tín hiệu "vui lòng sử dụng url bạn được chuyển hướng đến trong tương lai", giúp với công cụ tìm kiếm. Bạn nên sử dụng cùng một giải pháp nếu bạn di chuyển trang web của mình sang một tên miền mới.

Các vấn đề liên quan