Avatar billede dotcom1 Nybegynder
27. januar 2005 - 11:02 Der er 8 kommentarer og
1 løsning

Syntaks i .htaccess

Hvis man skal blokere for referrer-spam, hvad er så foskelllen på at skrive f.eks.
RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)formula42(-|.).*$ [NC,OR]
og
RewriteCond %{HTTP_REFERER} ^http://(www\.)?formula42.*$ [NC,OR]
altså, hvad betyder .*(-|.) - kan nogen forklare syntaksen?
Avatar billede rasmusbg Nybegynder
27. januar 2005 - 12:02 #1
Det betyder, at der kan stå 0 eller flere tegn efterfulgt af en bindestreg eller et tegn.
Avatar billede dotcom1 Nybegynder
27. januar 2005 - 14:20 #2
.*(-|.) betyder altså at der kan stå 0 eller flere tegn efterfulgt af en bindestreg eller et tegn. Okay, tak. :) Hvad så med hennohldsvis *$ og [NC,OR]. Hvad gør disse angivelser? Og er der nogen, der kender et link til en oversigt over syntaks i .htaccess?
Avatar billede rasmusbg Nybegynder
27. januar 2005 - 14:25 #3
En guide: http://httpd.apache.org/docs-2.0/mod/mod_rewrite.html

* betyder 0 eller flere af det foregående regulære (del)udtryk. $ afslutter hele det regulære udtryk, der blev startet med ^.

NC betyder, at RewriteCond er ligeglad med om bogstaverne er store eller små.

OR er et logisk eller, så den betingelse, der står på samme linie eller den næste betingelse (eller begge) skal være sand, for at den for betingelserne gældende RewriteRule bliver udført.
Avatar billede dotcom1 Nybegynder
27. januar 2005 - 14:31 #4
Super. Det giver jo mening.
En sidste ting: Jeg har set at nogen bruger følgende afslutning på RewriteCond: RewriteRule ^(.*) http://%{REMOTE_ADDR}/ [R=301,L] som skulle gøre sådan at referer spammers, f.eks formmula42 som i ovennævnte eksempel, ender med at spamme sig selv - er det korrekt? Og hvad gør [R=301,L] så?
Avatar billede dotcom1 Nybegynder
27. januar 2005 - 14:37 #5
Forhøjer lige points lidt...
Avatar billede dotcom1 Nybegynder
27. januar 2005 - 14:41 #6
Aha, via dit link kan jeg faktisk se svaret selv:  R=301 redirecter med beskeden at siden er flyttet permanent. (force rewrite.) L stopper yderligere rewriting. :-)
Avatar billede rasmusbg Nybegynder
27. januar 2005 - 14:48 #7
Jeps...og placerer man en

RewriteRule ^(.*)$ http://%{REMOTE_ADDR} [R=301,L]

efter de betingelser, du har skrevet, burde de blive sendt hen til dem selv. Men det virker bare ikke så gennemtænkt. Istedet ville dette nok være en bedre RewriteRule

RewriteRule !^$ - [F]
Avatar billede rasmusbg Nybegynder
27. januar 2005 - 14:50 #8
Hov...mangler lige en ,L i [], så det kommer til at se sådan ud:

RewriteRule !^$ - [F,L]
Avatar billede dotcom1 Nybegynder
27. januar 2005 - 14:56 #9
Mange tak. :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester