2011-03-14 9 views
5

Estoy intentando crear un sitio web multilingüe con Drupal.¿Cómo tener varias reescrituras con .htaccess?

me gusta tener el siguiente formato URL

http://domain/[language]/[node id]

por lo que añade la siguiente regla a .htaccess para el propósito de prueba

RewriteRule ^jpn/[0-9]$ jpn.html

El problema es que se sobrescribe la regla por la siguiente regla

RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

¿Cómo puedo tener varias reglas de reescritura?

Respuesta

9

Su segundo RewriteRule tiene el conjunto L Flag, lo que significa que si la regla coincide, no se procesarán más reglas.

Si desea que su primera regla también detenga cualquier procesamiento adicional, agregue también la L Flag.

RewriteRule ^jpn/[0-9]$ jpn.html [L] 

También asegúrese de que su segunda regla aparece en la lista anterior, ya que coincide con todo (. *) Y, por tanto, Apache no verán ninguna otra regla después de ella.

Editado: la URL L bandera

+0

// Gracias !! funciona perfectamente ¿Dónde puedo obtener una lista de esos ... [L]? ¿qué nombre tiene? – Moon

+0

Verifique el enlace (http://httpd.apache.org/docs/2.3/rewrite/flags.html#flag_l) - todas las banderas se explican allí mismo. L significa último. –

+0

// ¡Agradezco su opinión! ¡¡Gracias!! – Moon

0

No estoy seguro de que esto [L] realmente funciona en cada caso para evitar sobrescribir uno entre sí. No soy un experto en esto, pero me pasé un día dándome cuenta de que solo necesitas agregar 1 Atome a una RewriteRule que funcionó antes sin sobrescribir, y comienza a sobrescribirse nuevamente desde la primera. Es difícil para mí creer que 2 Reglas diferentes, en 1 htaccess pueden funcionar correctamente para 2 archivos diferentes.

Ambos trabajaron 100% así

RewriteRule ([a-zA-Z_]+)/([a-zA-Z_]+)/([a-zA-Z_]+)\.htm$ display.php?$1&category=$2 [L] 
RewriteRule ^/?([a-zA-Z_]+)/([a-zA-Z_]+)\.htm$ news.php?$1 [L] 

DISPL
noticias

Enlace 2 muestra el resultado de vínculo1 lugar ..., sólo dime por qué?

RewriteRule ([a-zA-Z_]+)/([a-zA-Z_]+)/([a-zA-Z_]+)\.htm$ display.php?$1&category=$2 [L] 
RewriteRule ^/?([a-zA-Z_]+)/([a-zA-Z_]+)/([a-zA-Z_]+)\.htm$ news.php?$1&obj=$2&search=$3 [L] 

DISPL
noticias

Cuestiones relacionadas