it-swarm.it

Qual è il modo più rapido / economico per implementare la riscrittura degli URL?

Relativo a n'altra domanda - se è necessario implementare al più presto la riscrittura degli URL, quali sono i metodi che hai usato o che conosci che possono accelerare questo?

2
Mark Henderson

Siamo riusciti a fare diverse centinaia di prodotti in meno di 8 ore. Ecco il nostro scenario:

Abbiamo avuto:

  • Insegui brutti URL riempiti con parametri insignificanti
  • Sviluppatori interni
  • Accesso completo al database e allo schema SQL
  • IIS6/ ISAPI Rewrite (ma avremmo potuto farlo per gli altri)

Opzione 1

La tabella dei nostri prodotti era simile alla seguente:

ID | Product Name | Description | etc
-------------------------------------
001|Product 1     | This is...  | etc
002|Product 1     | This is...  | etc
003|Product 1     | This is...  | etc

Quindi abbiamo scritto un piccolo programma batch che eseguirà il ciclo attraverso la nostra tabella products e creerebbe voci nel nostro file httpd.ini (versione di ISAPI Rewrite di .htaccess), così abbiamo finito con un file con centinaia di voci come questa:

RewriteRule (/product-1/) /DLLFolder/Requester.dll?APPLICATION=MyApp&PROGRAM=Products&ARGUMENTS=-N001 [I,O,U] * Si prega di consultare la dichiarazione di non responsabilità

I nostri prodotti non cambiano molto spesso, quindi lo eseguiamo di nuovo manualmente ogni volta che aggiungiamo qualcosa. Non elegante, ma si tratta di farlo veloce/economico.

Quindi, ovunque i nostri collegamenti fossero stampati sui prodotti, ci siamo semplicemente assicurati che i collegamenti fossero inviati al loro URL completo.

Ci sono volute circa 8 ore in totale.

Opzione 2

Una singola regola di riscrittura URL generica simile a questa:

RewriteRule (/products/)(.*/)(.*) /DLLFolder/Requester.dll?APPLICATION=MyApp&PROGRAM=Products&ARGUMENTS=-N$3 [I,O,U] * Si prega di consultare la dichiarazione di non responsabilità

Ciò significa che potremmo scrivere:

/products/my/thing/whatever/the/hell/i/want/123

E riscriverebbe all'URL corretto. Quindi si tratta solo di modificare l'output dei collegamenti URL.

* DISCLAIMER: Le mie abilità di regex sono molto arrugginite e le ho inventate sul posto. Potrebbero sbagliarsi. Il tuo chilometraggio sul regex reale può variare, ma il concetto rimane valido.

2
Mark Henderson