mod_rewrite para las URL con las cadenas de consulta

  • caravan5
  • Novice
  • Novice
  • No Avatar
  • Registrado: Nov 25, 2008
  • Mensajes: 20
  • Status: Offline

Nota Marzo 24th, 2010, 8:40 am

Soy totalmente nuevo para mod_rewrite, así que por favor tengan paciencia conmigo.

Im tratando de hacer un redireccionamiento 301 en nuestra URL dinámica muy largo para que apunten a nuestra página de inicio estándar sin la cadena de consulta y no se cuentan como contenido duplicado.

Ive consiguió una expresión regular que debería funcionar, pero si añado a la htaccess y subirlo, me aparece un error interno del servidor.

Esto es lo que Ive consiguió en el htaccess:
Código: [ Select ]
RewriteEngine on
RewriteRule ^http:\/\/www\.example\.co\.uk\/index\.php\?affiliatecode=[A-Z0-9]+&campaignID=[A-Z0-9 ]+&mediumID=[A-Z0-9 ]+&activityID=[A-Z0-9 ]+$ //then the standard home page URL
  1. RewriteEngine on
  2. RewriteRule ^http:\/\/www\.example\.co\.uk\/index\.php\?affiliatecode=[A-Z0-9]+&campaignID=[A-Z0-9 ]+&mediumID=[A-Z0-9 ]+&activityID=[A-Z0-9 ]+$ //then the standard home page URL


Y esta es la URL de la muestra antes de la redirección:
Código: [ Select ]
http://homepageURL?affiliatecode=FADTHYJ&campaignID=HY789JH&mediumID=HGYFR76&activityID=7HYGF0
Sustitución de homepageURL con URL real (no sólo le permite colocar cualquier URL)

Gracias de antemano
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Marzo 24th, 2010, 8:40 am

  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de Usuario
  • Registrado: Dic 20, 2002
  • Mensajes: 8934
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Nota Marzo 24th, 2010, 9:19 am

¿Existe de todos modos se puede ver lo que se graba a su registro de errores? Eso haría que sea muy fácil de averiguar qué está causando el problema.
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • caravan5
  • Novice
  • Novice
  • No Avatar
  • Registrado: Nov 25, 2008
  • Mensajes: 20
  • Status: Offline

Nota Marzo 25th, 2010, 2:05 am

Ok, el registro de errores, dice:
Código: [ Select ]
[Wed Mar 24 15:23:14 2010] [alert] [client 81.178.22.65] /home/hosted/database_name/example.xx.xx/htdocs/.htaccess: RewriteRule: bad flag delimiters


Así que probablemente algo que ver con delimitadores de marca - lo que son!

¿Alguna idea?
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de Usuario
  • Registrado: Dic 20, 2002
  • Mensajes: 8934
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Nota Marzo 25th, 2010, 8:15 am

¿Necesita información un poco más. Usted dijo que ésta:

Código: [ Select ]
RewriteRule ^http:\/\/www\.example\.co\.uk\/index\.php\?affiliatecode=[A-Z0-9]+&campaignID=[A-Z0-9 ]+&mediumID=[A-Z0-9 ]+&activityID=[A-Z0-9 ]+$ //then the standard home page URL


¿Qué es lo que verdaderamente tiene después de que el estándar de página de inicio URL que es donde están las banderas?

Por ejemplo:

Código: [ Select ]
RewriteRule ^http:\/\/www\.example\.co\.uk\/index\.php\?affiliatecode=[A-Z0-9]+&campaignID=[A-Z0-9 ]+&mediumID=[A-Z0-9 ]+&activityID=[A-Z0-9 ]+$ http://www.somesite.com/ [QSA,L]


El [QSA, L] es la bandera. ¿Cuáles son sus banderas?
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • caravan5
  • Novice
  • Novice
  • No Avatar
  • Registrado: Nov 25, 2008
  • Mensajes: 20
  • Status: Offline

Nota Marzo 25th, 2010, 9:17 am

Tuve [R = 301, L]
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de Usuario
  • Registrado: Dic 20, 2002
  • Mensajes: 8934
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Nota Marzo 25th, 2010, 10:29 am

¿Tiene otras líneas al archivo. Htaccess que podría haber banderas de malo? ¿Se puede pegar el contenido del archivo. Htaccess aquí. Si tiene problemas de desplazamiento debido a la URL de los filtros de spam ozzus poner pare nothesis torno a los períodos como este:

(.) www yoursite (.) com
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13458
  • Loc: Florida
  • Status: Offline

Nota Marzo 27th, 2010, 8:40 am

Lectura a través de sus puestos de chicos de aquí, algunas cosas que se destacan por mí.

1) Si usted fuera reescribir affiliatecode la variable de cadena de consulta, ¿cómo vas a seguirlo?

2) [ la coincidencia de patrón para la ] RewriteRule no ve el protocolo, de acogida, o la cadena de consulta último que supe. Sólo se ve el URI (todo lo que entre ". Co.uk /" y "? Variable..."). Usted tendría que utilizar con el RewriteCond% corosponding variable_name () para trabajar con cualquiera de ellos.

3) ¿Ha leído esto ?

/ / Edit - Aclaración #2 a la luz de lo que parte de RewriteRule trabaja con la cadena de consulta
Strong with this one, the sudo is.
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de Usuario
  • Registrado: Dic 20, 2002
  • Mensajes: 8934
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Nota Marzo 27th, 2010, 9:00 am

Creo que por defecto el RewriteRule no ve la cadena de consulta, pero si se utiliza la bandera de QSA lo hace:

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

Quote:
Modificación de la cadena de consulta

De forma predeterminada, la cadena de consulta se pasa a través de cambios. Usted puede, sin embargo, cree las URL en la cadena de sustitución que contenga una parte de cadena de consulta. Sólo tiene que utilizar un signo de interrogación dentro de la cadena de sustitución para indicar que el siguiente texto debe volver a inyectar en la cadena de consulta. Cuando se desea borrar una cadena de consulta existentes, poner fin a la cadena de sustitución con la marca de sólo una pregunta. Para combinar las cadenas de consulta nuevos y antiguos, utilice la opción [QSA].


Y aquí de 1,3 usuarios:

http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html

Quote:
qsappend | QSA (cadena de consulta de datos anexados)
Esta bandera fuerzas el motor de reescritura para anexar una parte de cadena de consulta en la cadena de sustitución de la existente en lugar de reemplazarlo. Utilice esto cuando usted quiere agregar más datos a la cadena de consulta a través de una regla de reescritura.


Edit *

Después de leer lo que escribió joebert creo que la bandera de QSA se puede utilizar con la regla de reescritura, pero sólo para la parte de la reescritura como el cambio o la adición de nuevas variables a la cadena de consulta. Creo que joebert puede tener razón en el hecho de que en realidad no se puede coincidir con la cadena de consulta sin necesidad de utilizar un primer RewriteCond.
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13458
  • Loc: Florida
  • Status: Offline

Nota Marzo 27th, 2010, 11:21 am

Debería haber sido más específico. El primer argumento, o el patrón de la sección coincidente, de la directiva RewriteRule no ve la cadena de consulta.

El QSA, o de cadena de consulta bandera Append se refiere al segundo argumento de la directiva RewriteRule, o la sección de reemplazo. La bandera sólo es realmente pertinente cuando la cadena de reemplazo incluye una cadena de consulta en sí.


Teniendo en cuenta la URL del ejemplo siguiente. Ive sólo incluyó los elementos que suelen ir a ver en una URL.

Código: [ Select ]
RewriteCond %{SERVER_PROTOCOL} ^http$
RewriteCond %{HTTP_HOST} ^domain\.tld$
RewriteCond %{QUERY_STRING} ^querystring=value$
RewriteRule ^uri$ http://domain.com [R=302,L]
  1. RewriteCond %{SERVER_PROTOCOL} ^http$
  2. RewriteCond %{HTTP_HOST} ^domain\.tld$
  3. RewriteCond %{QUERY_STRING} ^querystring=value$
  4. RewriteRule ^uri$ http://domain.com [R=302,L]
Strong with this one, the sudo is.
  • caravan5
  • Novice
  • Novice
  • No Avatar
  • Registrado: Nov 25, 2008
  • Mensajes: 20
  • Status: Offline

Nota Marzo 30th, 2010, 5:40 am

Vale

Im perdido por completo ahora. Así que incluso si lo puedo conseguir trabajo, no voy a ser capaz de seguir conduce de afiliados?

El código que tengo en mi htaccess ve algo como esto (tipo por favor, mi conocimiento de mod_rewrite es primitivo por decir lo menos):

Código: [ Select ]
redirect 301 /news/wessex-milbourne-review.htm http(:)//www(.)mysite(.)co(.)uk/news/luxury-lodge-138/
redirect 301 /news/willerby-aspen-review.htm http(:)//www(.)mysite(.)co(.)uk/news/wonderful-willerby-140/
redirect 301 /news/willerby-boston-lodge-review.htm http(:)//www(.)mysite(.)co(.)uk/willerby-boston-holiday-home-142/
redirect 301 /news/willerby-granada-xl-holiday-home-review.php http(:)//www(.)mysite(.)co(.)uk/news/the-willerby-granada-xl-holiday-home-144/
redirect 301 /news/willerby-leven-review.htm http(:)//www(.)mysite(.)co(.)uk/news/willerby-leven-146/
redirect 301 /news/willerby-rio-review.htm http(:)//www(.)mysite(.)co(.)uk/news/the-willerby-two-bedroom-rio-holiday-home-148/
redirect 301 /news/willerby-signature-review.htm http(:)//www(.)mysite(.)co(.)uk/news/the-willerby-signature-holiday-home-150/
redirect 301 /news/winterization-article.htm http(:)//www(.)mysite(.)co(.)uk/news/getting-ready-for-winter-152/
redirect 301 /login/index.php http(:)//www(.)mysite(.)co(.)uk/index.aspx?op=login&partner=leisuredays&product=holidayhome
redirect 301 /longbeach/index.php http(:)//www(.)mysite(.)co(.)uk/index.php?affiliatecode=LONGBE+LP&campaignID=OLARK546&mediumID=ONARK621&activityID=NTNET821



ErrorDocument 404 /404.php


<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /news/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /news/index.php [L]
</IfModule>
  1. redirect 301 /news/wessex-milbourne-review.htm http(:)//www(.)mysite(.)co(.)uk/news/luxury-lodge-138/
  2. redirect 301 /news/willerby-aspen-review.htm http(:)//www(.)mysite(.)co(.)uk/news/wonderful-willerby-140/
  3. redirect 301 /news/willerby-boston-lodge-review.htm http(:)//www(.)mysite(.)co(.)uk/willerby-boston-holiday-home-142/
  4. redirect 301 /news/willerby-granada-xl-holiday-home-review.php http(:)//www(.)mysite(.)co(.)uk/news/the-willerby-granada-xl-holiday-home-144/
  5. redirect 301 /news/willerby-leven-review.htm http(:)//www(.)mysite(.)co(.)uk/news/willerby-leven-146/
  6. redirect 301 /news/willerby-rio-review.htm http(:)//www(.)mysite(.)co(.)uk/news/the-willerby-two-bedroom-rio-holiday-home-148/
  7. redirect 301 /news/willerby-signature-review.htm http(:)//www(.)mysite(.)co(.)uk/news/the-willerby-signature-holiday-home-150/
  8. redirect 301 /news/winterization-article.htm http(:)//www(.)mysite(.)co(.)uk/news/getting-ready-for-winter-152/
  9. redirect 301 /login/index.php http(:)//www(.)mysite(.)co(.)uk/index.aspx?op=login&partner=leisuredays&product=holidayhome
  10. redirect 301 /longbeach/index.php http(:)//www(.)mysite(.)co(.)uk/index.php?affiliatecode=LONGBE+LP&campaignID=OLARK546&mediumID=ONARK621&activityID=NTNET821
  11. ErrorDocument 404 /404.php
  12. <IfModule mod_rewrite.c>
  13. RewriteEngine On
  14. RewriteBase /news/
  15. RewriteCond %{REQUEST_FILENAME} !-f
  16. RewriteCond %{REQUEST_FILENAME} !-d
  17. RewriteRule . /news/index.php [L]
  18. </IfModule>


El último 301 es un ejemplo de una filial (longbeach), cuya dirección redirige a la URL de seguimiento, pero realmente queremos que esto vaya a nuestra página web, pero todavía es tema. Estaba pensando Id necesidad de tener 2 301s para cada afiliado, una reorientación de una dirección URL agradable la URL de seguimiento con la cadena de consulta y una dirección de este a la página principal normal de nuestro sitio. Im ni siquiera seguro de si su posible.
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13458
  • Loc: Florida
  • Status: Offline

Nota Marzo 30th, 2010, 7:54 am

Usted puede pensar en mod_rewrite como una manera de alterar la dirección del usuario está pidiendo antes de que su servidor se lo pidió. Es un gran ejemplo, de pie justo detrás del usuario mientras se escribe una dirección y corregirlos, si escribe "sutff" en lugar de "cosas".

Ahora, técnicamente, la petición ha llegado al servidor cuando se trabaja con mod_rewrite, así que en realidad sus más como estar detrás de alguien en un club nocturno y corregir si comienzan a decir que su apodo en lugar del nombre del gorila en realidad se encuentra en la lista .

Todos los mod_rewrite hace es manejar alias. Las variables de cadena de consulta que no están incluidos en el URL de resultado se tiran, nunca el servidor sabe que existían.

En nuestro escenario portero sería como volver a la puerta y antes de decir su nombre es "Slick Rick" corregir a "Rick" y el gorila comprueba la lista de "Rick". Después de Rick se mete dentro de la puerta, es a partir de ahí a que se refiere a Rick "" y no "Slick Rick", porque el portero le dio una etiqueta con el nombre simplemente "Rick" en él. Rick también ha milagrosamente olvidado que una vez fue conocido como "Slick Rick".

--

Lo que usted necesita hacer es configurar sus redirecciones 301 para sus afiliados a un script de registro con su ID de afiliado adjunta. Dentro de esta secuencia de comandos que se encargará de su registro de afiliados, y colocar el ID de afiliado de una sesión y enviar una cookie de sesión, junto con una segunda solicitud de redireccionamiento 301 desde dentro de la secuencia de comandos.

--

Así que, básicamente, no se va a utilizar o mod_rewrites RewriteRule RewriteCond a todos para lograr lo que usted necesita hacer.
Strong with this one, the sudo is.
  • caravan5
  • Novice
  • Novice
  • No Avatar
  • Registrado: Nov 25, 2008
  • Mensajes: 20
  • Status: Offline

Nota Marzo 30th, 2010, 8:03 am

Gracias, y joebert Bigwebmaster, Ill enviar un pedido de ayuda en el foro de programación cuando llego a mi cabeza a su alrededor!

Publicar Información

  • Total de mensajes en este tema: 12 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 25 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC