Pagina 1 di 1

Escludere una parola da una espressione regolare

Inviato: ven 26 set 2008, 13:10
da conraid
Non so se è la sezione giusta, mi trovo a dover escludere una parola da una espressione regolare

Ecco l'esempio

Codice: Seleziona tutto

redirectmatch 301 /packages/(.*)$ h_t_t_p://www.slackers.it/repository/$1
In pratica voglio che ogni corrispondenza di h_t_t_p://www.slackers.it/packages/* sia indirizzata a h_t_t_p://www.slackers.it/repository/*, per esempio
h_t_t_p://www.slackers.it/packages/mutt -> h_t_t_p://www.slackers.it/repository/mutt

Questo tranne h_t_t_p://www.slackers.it/packages e h_t_t_p://www.slackers.it/packages/index

Se la prima si esclude con quella regex, altrimenti avrei messo

Codice: Seleziona tutto

 redirect 301 /packages/ h_t_t_p://www.slackers.it/repository/
come ho fatto per package

Codice: Seleziona tutto

redirect 301 /package/ h_t_t_p://www.slackers.it/repository/
Devo fare questo per il cambio di directory effettuato varie volte. Sì, lo so che era meglio decidere prima, ma ormai...

Come posso escludere /packages/index da /packages/(.*)$ ?

Spero di essere riuscito a spiegare quel che voglio fare

p.s.
ho messo h_t_t_p al posto di http per non far linkare le pagine

Re: Escludere una parola da una espressione regolare

Inviato: ven 26 set 2008, 13:21
da IceSlack
e? non si capisce molto vorresti replaciare un campo con un altro?

comunque dovrai usare una replace del tuo linguaggio, con che linguaggio stai programmando lo script?

Re: Escludere una parola da una espressione regolare

Inviato: ven 26 set 2008, 13:25
da paolo86
Stai usando gli htaccess, giusto?

Io farei così...

Codice: Seleziona tutto

RewriteCond %{REQUEST_URI} !packages
RewriteCond %{REQUEST_URI} !packages/index
RedirectMatch 301 /packages/(.*)$ h_t_t_p://www.slackers.it/repository/$1
Non so se è proprio corretto... l'ho scritto direttamente qui senza testarlo...

Re: Escludere una parola da una espressione regolare

Inviato: ven 26 set 2008, 14:09
da conraid
paolo86 ha scritto:Stai usando gli htaccess, giusto?
Sì, ora provo. Grazie

Re: Escludere una parola da una espressione regolare

Inviato: ven 26 set 2008, 14:56
da conraid
Niente, ho fatto varie prova, ma non prende l'espressione

Questa è la pagina
h_t_t_p://www.slackers.it/packages/
come vedere viene rimandata ad una inesistente repository/index

Re: Escludere una parola da una espressione regolare

Inviato: ven 26 set 2008, 15:52
da conraid
Ho tolto le righe da .htaccess per adesso

Re: Escludere una parola da una espressione regolare

Inviato: ven 26 set 2008, 15:53
da paolo86
Ho notato solo ora che tu stai usando solo il mod_alias... :oops:
Io invece ti ho mischiato mod_alias e mod_rewrite senza accorgermene #-o
Se usi il mod_rewrite in questo modo dovrebbe funzionare (ho fatto una prova veloce e sembra funzionare):

Codice: Seleziona tutto

RewriteCond %{REQUEST_URI} !packages/$
RewriteCond %{REQUEST_URI} !packages/index
RewriteRule packages/(.*)$ repository/$1
Ciao!

Re: Escludere una parola da una espressione regolare

Inviato: ven 26 set 2008, 16:22
da conraid
No, non va.
Non mi cambia l'url

il problema dell'index è sparito, nel senso che c'era una regola

Codice: Seleziona tutto

redirectmatch 301 /(.*).html$ _http://www.slackers.it/$1
che produceva quell'index, tolta questa per esempio

Codice: Seleziona tutto

redirectmatch 301 /packages/(.*)$ h_ttp://www.slackers.it/repository/$1
funziona, solo che mi matcha anche /packages/ normale che invece non deve essere toccato :-(

Re: Escludere una parola da una espressione regolare

Inviato: ven 26 set 2008, 16:41
da paolo86
Invece di mettere

Codice: Seleziona tutto

redirectmatch 301 /packages/(.*)$ h_ttp://www.slackers.it/repository/$1
potresti provare con questo:

Codice: Seleziona tutto

redirectmatch 301 /packages/(.+)$ h_ttp://www.slackers.it/repository/$1
Con "+" invece di "*"...

Lo "*" riconosce 0 o più volte... il "+" 1 o più volte...
in questo modo dovrebbe fare il redirect solo se c'è almeno un carattere dopo "/packages/".

Ciao!

Re: Escludere una parola da una espressione regolare

Inviato: ven 26 set 2008, 16:43
da conraid
che scemo... non ci avevo pensato.
ora provo

UPDATE
Funziona... devo mettermi a fare mezz'ora di escremiditazione al giorno per una settimana mi sa, perdo i colpi :(

A parte le battute
Grazie, un credito tra i fannulloni ;-)

UPDATE2
mi sai per caso anche dire perché se inserisco questa regola

redirectmatch 301 /(.+).html$ h_ttp://www.slackers.it/$1

con * o + è uguale, dopo anche la regola sopra non funziona e mi riproduce
h_ttp://www.slackers.it/repository/mutt/index invece di h_ttp://www.slackers.it/repository/mutt/ come fa adesso, per esempio?

Re: Escludere una parola da una espressione regolare

Inviato: ven 26 set 2008, 16:53
da paolo86
conraid ha scritto:che scemo... non ci avevo pensato.
ora provo
Può capitare a chiunque...
Eh.. quante volte mi è successo... :roll: :lol:
conraid ha scritto: Grazie, un credito tra i fannulloni ;-)
Prego. :thumbright:

EDIT:
conraid ha scritto:UPDATE2
mi sai per caso anche dire perché se inserisco questa regola

redirectmatch 301 /(.+).html$ h_ttp://www.slackers.it/$1

con * o + è uguale, dopo anche la regola sopra non funziona e mi riproduce
h_ttp://www.slackers.it/repository/mutt/index invece di h_ttp://www.slackers.it/repository/mutt/ come fa adesso, per esempio?
Aspetta... questa non l'ho ben capita...