Escludere una parola da una espressione regolare

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
conraid
Staff
Staff
Messaggi: 12743
Iscritto il: gio lug 14, 2005 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Località: Livorno
Contatta:

Escludere una parola da una espressione regolare

Messaggioda conraid » ven set 26, 2008 13:10

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

Avatar utente
IceSlack
Linux 3.x
Linux 3.x
Messaggi: 1313
Iscritto il: dom ott 30, 2005 13:27

Re: Escludere una parola da una espressione regolare

Messaggioda IceSlack » ven set 26, 2008 13:21

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?

Avatar utente
paolo86
Linux 1.0
Linux 1.0
Messaggi: 73
Iscritto il: lun lug 14, 2008 19:22
Nome Cognome: Paolo Cortis
Slackware: Slackware64 current
Kernel: 3.4.1-jiraiya
Desktop: KDE 4.8.2
Località: Cagliari
Contatta:

Re: Escludere una parola da una espressione regolare

Messaggioda paolo86 » ven set 26, 2008 13:25

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...

Avatar utente
conraid
Staff
Staff
Messaggi: 12743
Iscritto il: gio lug 14, 2005 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Località: Livorno
Contatta:

Re: Escludere una parola da una espressione regolare

Messaggioda conraid » ven set 26, 2008 14:09

paolo86 ha scritto:Stai usando gli htaccess, giusto?


Sì, ora provo. Grazie

Avatar utente
conraid
Staff
Staff
Messaggi: 12743
Iscritto il: gio lug 14, 2005 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Località: Livorno
Contatta:

Re: Escludere una parola da una espressione regolare

Messaggioda conraid » ven set 26, 2008 14:56

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

Avatar utente
conraid
Staff
Staff
Messaggi: 12743
Iscritto il: gio lug 14, 2005 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Località: Livorno
Contatta:

Re: Escludere una parola da una espressione regolare

Messaggioda conraid » ven set 26, 2008 15:52

Ho tolto le righe da .htaccess per adesso

Avatar utente
paolo86
Linux 1.0
Linux 1.0
Messaggi: 73
Iscritto il: lun lug 14, 2008 19:22
Nome Cognome: Paolo Cortis
Slackware: Slackware64 current
Kernel: 3.4.1-jiraiya
Desktop: KDE 4.8.2
Località: Cagliari
Contatta:

Re: Escludere una parola da una espressione regolare

Messaggioda paolo86 » ven set 26, 2008 15:53

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!

Avatar utente
conraid
Staff
Staff
Messaggi: 12743
Iscritto il: gio lug 14, 2005 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Località: Livorno
Contatta:

Re: Escludere una parola da una espressione regolare

Messaggioda conraid » ven set 26, 2008 16:22

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 :-(

Avatar utente
paolo86
Linux 1.0
Linux 1.0
Messaggi: 73
Iscritto il: lun lug 14, 2008 19:22
Nome Cognome: Paolo Cortis
Slackware: Slackware64 current
Kernel: 3.4.1-jiraiya
Desktop: KDE 4.8.2
Località: Cagliari
Contatta:

Re: Escludere una parola da una espressione regolare

Messaggioda paolo86 » ven set 26, 2008 16:41

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!

Avatar utente
conraid
Staff
Staff
Messaggi: 12743
Iscritto il: gio lug 14, 2005 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Località: Livorno
Contatta:

Re: Escludere una parola da una espressione regolare

Messaggioda conraid » ven set 26, 2008 16:43

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?

Avatar utente
paolo86
Linux 1.0
Linux 1.0
Messaggi: 73
Iscritto il: lun lug 14, 2008 19:22
Nome Cognome: Paolo Cortis
Slackware: Slackware64 current
Kernel: 3.4.1-jiraiya
Desktop: KDE 4.8.2
Località: Cagliari
Contatta:

Re: Escludere una parola da una espressione regolare

Messaggioda paolo86 » ven set 26, 2008 16:53

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...


Torna a “Programmazione”

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti