2012-07-25 22 views
11

Tengo una IP externa y un nombre de host configurados para mi máquina.Apache httpd.conf para redirigir la IP al nombre de host

Dentro de la aplicación, estoy usando solo los nombres de dominio para acceder a las API. Entonces, cuando trato de acceder a mis API a través de la dirección IP, muestra 302 Error temporalmente movido. Entonces, para la solicitud (para la página de inicio) que golpea el servidor con la dirección IP, debe redirigir a nombre de host.

Es decir, cuando el usuario golpea https://XX.XX.XX.XX/main debe ser redirigido a https://ayz-abc.mysite.com/main

Para esto he intentado usar la redirección en httpd.conf de 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> 

también he tratado con la siguiente

<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 me ayude.

+0

302 no es un error. Si el servidor está respondiendo con un 302, entonces la redirección está funcionando. ¿Cuál es la respuesta HTTP del servidor? –

+0

La interfaz de usuario todavía no se redirige al nombre de host, pero las API están configuradas internamente para señalar los nombres de host. así que cuando intento acceder a las API desde la interfaz de usuario, la solicitud a las API (con el nombre del host) muestra 302 – Poppy

Respuesta

7

Ok. Se echa en falta una condición reescritura

<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> 

Si no se incluye esta condición volverá a dirigir incluso con el nombre de host

+1

Eso borra el resto de la URL además de HTTP_HOST. Es mejor utilizar RewriteRule^(. *) $ Https: //ayz-abc.mysite.com$1 [R = 301, L] – pogeybait

1

Prueba esto:

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

también se puede ver reescribir los registros, see here

+0

. He intentado usarlo pero sigo recibiendo el mismo error. También Ankit, en el navegador, aún muestra solo la dirección IP ... ¿No será el nombre de host? – Poppy

+0

Redirigir permanente https: //xx.xx.xx.xx/main https://ayz-abc.mysite.com/main/ ¿estará bien? – Poppy

1

Esto funciona para mí. Añadir las configuraciones en httpd.conf de Apache

CASE-1: cuando el usuario golpea http://XX.XX.XX.XX/main o http://ayz-abc.mysite.com/main debe ser redirigido a https://ayz-abc.mysite.com/main

Configuración:

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

CASO 2: Cuando el usuario golpea https://XX.XX.XX.XX/main se debe ser redirigido a https://ayz-abc.mysite.com/main

Configuración:

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

Si NO está utilizando API pero solo quiere que los navegadores y rastreadores vayan a la URL en lugar de a una dirección IP, puede usar 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> 

Tiene la ventaja de responder con estado HTTP 301, que señala "por favor utilice la url se le redirige a en el futuro", que ayuda con los motores de búsqueda. Debe usar la misma solución si mueve su sitio a un nuevo dominio.

Cuestiones relacionadas