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...
Io invece ti ho mischiato mod_alias e mod_rewrite senza accorgermene
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...
conraid ha scritto:
Grazie, un credito tra i fannulloni
Prego.
EDIT:
Aspetta... questa non l'ho ben capita...