¿Cómo puedo ocultar el cambio de URL cuando se utiliza una de reescritura de apache? He buscado durante horas y horas sobre este tema y han decidido venir aquí para averiguar la respuesta. Así que cualquier ayuda/pistas sería muy apreciada!

Ahora mismo estoy usando:

RewriteRule ^/Page/(.*)$ http://domain.com/page.cfm?pagevar=$1 [NC,L]

El problema con eso es que, cuando vas a navegar a http://domain.com/Page/abc123
funciona. PERO, cambia la url del navegador para http://domain.com/page.cfm?pagevar=abc123,

Quiero que realizar la misma acción, pero muestran http://domain.com/Page/abc123 como la dirección url.

Por favor, cualquier idea sobre esto sería muy apreciada!
Gracias de nuevo.

OriginalEl autor cEMa | 2013-09-06

2 Comentarios

  1. 7

    Primera regla de redirigir la URL fea a la bonita formato de dirección URL.

    Segunda regla internamente redirigir de nuevo para el usuario no podrá ver la URL fea.

    Options +FollowSymLinks -MultiViews
    
    RewriteEngine On
    RewriteBase /
    
    # Redirect /page.cfm?pagevar=abc123 to /Page/abc123
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+page\.cfm\?pagevar=([^&\s]+) [NC]
    RewriteRule ^ /Page/%1? [R=301,L]
    
    # Internally forward /Page/abc123 to /page.cfm?pagevar=abc123
    RewriteRule ^Page/(.*)/?$ /page.cfm?pagevar=$1 [QSA,NC,L]
    

    Las reglas anteriores son para ser utilizado en .htaccess archivos y asume page.cfm está en la raíz de la carpeta de dominio junto con el .htaccess archivo.

    Como sus ejemplos propone.

    +1, es posible que desee agregar QSA bandera en la última RewriteRule
    gracias, yo estaba considerando eso, pero que sólo se aplica si él realmente desea cualquier cadenas de consulta llevado a que el nuevo formato de dirección URL.
    Sí de acuerdo pero nunca se sabe estos reescribir los requisitos. Pero sí OP no mencionar acerca de cualquiera de dichos requisitos.
    Gracias por la pronta respuesta! Como tenía miedo de que.. cuando se usa: RewriteBase / provoca que los servidores web a flipar cuando intento ejecutar apachectl restart. Es necesario para RewriteRule ^Page/(.*)/?$ /page.cfm?pagevar=$1 [QSA,NC,L] a trabajar? Edit: el webserver lanza RewriteBase: only valid in per-directory config files cuando se ejecuta apachectl restart.
    Como he mencionado, no es necesario colocarlo en el virtualhost que el lugar que en un .htaccess en la carpeta raíz de ese dominio.

    OriginalEl autor Prix

  2. 0

    Que usted necesita para deshacerse de la http://domain.com parte de la regla de destino. Cuando usted tiene que, implícitamente redirige el navegador en lugar de los de reescritura:

    RewriteRule ^/Page/(.*)$ /page.cfm?pagevar=$1 [NC,L]
    

    OriginalEl autor Jon Lin

Dejar respuesta

Please enter your comment!
Please enter your name here