Domanda

Volevo impostare .htaccess per riscrivere:

example.com/bla/info/

a

example.com/info/index.php?q=bla

example.com/bla/info/txt/

a

example.com/info/index.php?q=bla&t=txt

Volevo che il browser continuasse a essere visualizzato:

example.com/bla/info/txt/

Non volevo riscrivere nelle riscritture di livello 2, come:

example.com/bla/xxx/ 

o

example.com/ccc/zzz/aaa/

ma

example.com/silly/info/ 

funzionerebbe così come

example.com/strange/info/mytxt/

Aveva senso?

Qualche aiuto?

È stato utile?

Soluzione

Se inizi il tuo modello con ^ e lo finisci con $, la regola si applicherà solo se l'intera stringa corrisponde.

RewriteRule   ^/bla/info/$      /info/index.php?q=bla
RewriteRule   ^/bla/info/txt/$  /info/index.php?q=bla&t=txt

Se non si utilizza l'opzione [R], l'URL visualizzato nel browser sarà quello inserito dall'utente.

Stai cercando di realizzare questo scopo generale? In tal caso, è possibile utilizzare la corrispondenza del tipo regex e la sostituzione delle variabili. Per far corrispondere 'bla' a qualsiasi stringa fino alla barra successiva (/), usa

([^/]+)

nel tuo modello e fai riferimento a $ 1 nella tua sostituzione.

RewriteRule ^/([^/]+)/info/$          /info/index.php?q=$1
RewriteRule ^/([^/]+)/info/([^/]+)/$  /info/index.php?q=$1&t=$2

Raccomando le le pagine web di Apache su mod_rewrite per maggiori informazioni .

[Modifica. Risolto il problema con le regole per non includere il nome host nel modello, come capito dal poster originale.]

-
BMB

Altri suggerimenti

mi hai portato sulla strada giusta.

Ho finito con qualcosa del genere:

RewriteRule ^([^/\.]+)/info/?$ example/info/index.php?q=$1 [L]

grazie mille

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top