Repository 32bit  Forum
Repository 64bit  Wiki

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.

Escludere una parola da una espressione regolare

Messaggioda conraid » ven set 26, 2008 12: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
conraid
Staff
Staff
 
Messaggi: 11994
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Escludere una parola da una espressione regolare

Messaggioda IceSlack » ven set 26, 2008 12: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
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 paolo86 » ven set 26, 2008 12: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
paolo86
Linux 1.0
Linux 1.0
 
Messaggi: 73
Iscritto il: lun lug 14, 2008 18:22
Località: Cagliari
Nome Cognome: Paolo Cortis
Slackware: Slackware64 current
Kernel: 3.4.1-jiraiya
Desktop: KDE 4.8.2

Re: Escludere una parola da una espressione regolare

Messaggioda conraid » ven set 26, 2008 13:09

paolo86 ha scritto:Stai usando gli htaccess, giusto?


Sì, ora provo. Grazie
Avatar utente
conraid
Staff
Staff
 
Messaggi: 11994
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Escludere una parola da una espressione regolare

Messaggioda conraid » ven set 26, 2008 13: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: 11994
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Escludere una parola da una espressione regolare

Messaggioda conraid » ven set 26, 2008 14:52

Ho tolto le righe da .htaccess per adesso
Avatar utente
conraid
Staff
Staff
 
Messaggi: 11994
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Escludere una parola da una espressione regolare

Messaggioda paolo86 » ven set 26, 2008 14: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
paolo86
Linux 1.0
Linux 1.0
 
Messaggi: 73
Iscritto il: lun lug 14, 2008 18:22
Località: Cagliari
Nome Cognome: Paolo Cortis
Slackware: Slackware64 current
Kernel: 3.4.1-jiraiya
Desktop: KDE 4.8.2

Re: Escludere una parola da una espressione regolare

Messaggioda conraid » ven set 26, 2008 15: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
conraid
Staff
Staff
 
Messaggi: 11994
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Escludere una parola da una espressione regolare

Messaggioda paolo86 » ven set 26, 2008 15: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
paolo86
Linux 1.0
Linux 1.0
 
Messaggi: 73
Iscritto il: lun lug 14, 2008 18:22
Località: Cagliari
Nome Cognome: Paolo Cortis
Slackware: Slackware64 current
Kernel: 3.4.1-jiraiya
Desktop: KDE 4.8.2

Re: Escludere una parola da una espressione regolare

Messaggioda conraid » ven set 26, 2008 15: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
conraid
Staff
Staff
 
Messaggi: 11994
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Escludere una parola da una espressione regolare

Messaggioda paolo86 » ven set 26, 2008 15: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...
Avatar utente
paolo86
Linux 1.0
Linux 1.0
 
Messaggi: 73
Iscritto il: lun lug 14, 2008 18:22
Località: Cagliari
Nome Cognome: Paolo Cortis
Slackware: Slackware64 current
Kernel: 3.4.1-jiraiya
Desktop: KDE 4.8.2


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron