2009-07-10 20 views
5

Estoy desarrollando un sitio web que contiene 3 páginas (Inicio, página 2, página 3) ... en la segunda página hay una barra de navegación, con 4 elementos (subpágina1, subpágina2, ...), que utilizo para reemplazar el contenido de la página 2 con variables de URL! En otras palabras, el segundo elemento de la barra de navegación en puntos page2 a:¿Por qué esta RewriteRule no funciona?

http://localhost/uk/page2/index.php?pg=subpage2 

el punto de partida a 3:

http://localhost/uk/page2/index.php?pg=subpage3 

Ahora me gustaría utilizar URLs más amigable a través de .htaccess!

He escrito esto:

RewriteEngine On 
RewriteRule /uk/page2/(.*)/$ /uk/page2/index.php?pg=$1 

en el .htaccess colocado en la raíz!

¡Pero no funciona! Por favor ayuda!

Respuesta

9

cuando se está utilizando .htaccess usted no tiene la barra inicial:

RewriteEngine On 
RewriteRule ^uk/page2/(.*)/$ /uk/page2/index.php?pg=$1 
+0

Gracias a su respuesta! ¡También con esto, la reescritura no funciona! –

+0

Cuando dices que no funciona, ¿qué ocurre exactamente? – Greg

+0

Intenta poner algo de basura en .htaccess: deberías obtener 500 Server Error. Si no lo hace, su .htaccess no se está cargando – Greg

0

Puede ser la barra inclinada al final, por lo que cambiar esta situación:

RewriteEngine On 
RewriteRule /uk/page2/(.*)/$ /uk/page2/index.php?pg=$1 

a este :

RewriteEngine On 
RewriteRule ^(.*)uk/page2(/?)(.*)$ /uk/page2/index.php?pg=$3 

Otra cosa que se debe comprobar es que usted ha ajustado a AllowOverride Todo en su archivo httpd.conf, en lugar de ninguno. Si está configurado en Ninguno, no podrá hacer nada con .htaccess.

2

día G,

me gustaría sugerir que permite la opción de configuración RewriteLog a un alto nivel para comprobar lo que está sucediendo realmente en la cama.

Has AllowOverides been enabled?</obvious> (-: 

Parece que estás fuera de suerte usando .htaccess

mod_rewrite Increíblemente ofrece manipulaciones URL en el contexto de cada directorio, es decir, dentro de los archivos .htaccess, aunque éstos se alcanzan mucho tiempo después de que las URL hayan sido traducidas a nombres de archivos. Tiene que ser así porque los archivos .htaccess viven en el sistema de archivos, por lo que el procesamiento ya ha llegado a esta etapa. En otras palabras: De acuerdo con las fases de la API en este momento, es demasiado tarde para cualquier manipulación de URL. - Apache mod_rewrite doc.s (énfasis mío)

Cuestiones relacionadas