/ / 301 Htaccess RewriteRule Query_String - .htaccess, mod-rewrite, get, query-string

301 Htaccess RewriteRule Query_String - .htaccess, mod-rewrite, get, query-string

Problema: I visitatori aprono l'URL website.com/?i=133r534|213213|12312312 ma questo url non è più valido e devono essere inoltrati a website.com/#Videos:133r534|213213|12312312

Quello che ho provato: Durante le ultime ore ho provato molte regole mod_rewrite (.htaccess) usando Query_String, tutte fallite. L'ultimo messaggio in questo argomento mostra una soluzione a questo problema, ma quale sarebbe la regola nella mia situazione.

Sono molto curioso di sapere come risolveresti questo problema :)!

risposte:

6 per risposta № 1

Quanto segue gestirà il caso semplice che mostri. Dovrai aggiungere ulteriore logica se devi consentire altri parametri nella stringa di query o nei nomi dei file prima del ?.

RewriteEngine On
RewriteCond %{QUERY_STRING} ^i=(.*)
RewriteRule ^.*  /#Video:%1? [NE,R=permanent]

Perché è difficile?

  • RewriteRule non guarda la stringa di query, quindi devi usare RewriteCond per valutare la variabile QUERY_STRING e catturare la parte di cui avrai bisogno in seguito (riferito tramite %1)
  • il carattere hash (#) è normalmente sfuggito, è necessario specificare il flag [NE]
  • Il finale? sulla stringa di sostituzione è necessario sopprimere la stringa di query originale

L'ho testato su Apache 2.2.