2012-07-19 23 views
6

necesito utilizar el encabezado HTTP_HOST en un RewriteRule pero cambiar el puerto no puedo usar SERVER_NAME ya que será diferente del encabezado de host (que es lo que necesito)RewriteRule usando HTTP_HOST y un puerto diferente

Es Hay una forma de recortar el: puerto fuera de la variable HTTP_HOST para mod_rewrite?

+0

¿Quiere decir que está ejecutando Apache en un puerto diferente? – Devraj

+0

% {SERVER_PORT} contiene el puerto del servidor. ¿Podrías editar tu pregunta para que sea más descriptiva? –

+0

Necesita usar http_host para redirigir al servidor externo adecuado. este sitio virtual no está en el puerto 80 – arcyqwerty

Respuesta

9

Sí, puede recortar el puerto fuera del encabezado del host. Simplemente haga coincidir contra %{HTTP_HOST} y use una referencia inversa %1. Por ejemplo:

RewriteCond %{HTTP_HOST} ^([^:]+)(:[0-9]+)?$ 
RewriteRule^http://%1:12345/ [R,L] 

sólo tener en cuenta que la referencia inversa %1 sólo se puede utilizar en el primer parámetro de un RewriteCond, y no en un partido:

RewriteCond %{HTTP_HOST} ^([^:]+)(:[0-9]+)?$ 
RewriteCond %1 ^the.hostname.com$ [NC] 

está bien

RewriteCond %{HTTP_HOST} ^([^:]+)(:[0-9]+)?$ 
RewriteCond %{REQUEST_URI} ^%1 

NO está bien

+0

Creo que resolvió mi problema. ¡Gracias! :) – arcyqwerty

Cuestiones relacionadas