Avatar billede jps2mt Nybegynder
13. september 2003 - 20:16 Der er 19 kommentarer og
1 løsning

Rewrite vil ikke virke, RewriteMap not allowed here

Når jeg bruger denne regel:

Rewritelog rewrite.log
RewritelogLevel 9

RewriteMap lowercase int:tolower
RewriteEngine on
RewriteCond ${lowercase:%{HTTP_HOST}} !^$
RewriteCond ${lowercase:%{HTTP_HOST}} !^www\.homedir\.dk$

RewriteCond ${lowercase:%{HTTP_HOST}} ^(www\.)([^.]+)\.homedir\.dk$
RewriteRule ^(.+) ${lowercase:%{HTTP_HOST}}$1 [C]
RewriteRule ^(www\.)([^.]+)\.homedir\.dk(.*) /home/$2/html$3 [L]

RewriteCond ${lowercase:%{HTTP_HOST}} ^(www\.)homedir\.dk$
RewriteRule ^(.+) ${lowercase:%{HTTP_HOST}}$1 [C]
RewriteRule ^(www\.)homedir\.dk(.*) /home/Morten/html/www.homedir.dk$2 [L]

RewriteCond ${lowercase:%{HTTP_HOST}} ^([^.]+)\.homedir\.dk$
RewriteRule ^(.+) ${lowercase:%{HTTP_HOST}}$1 [C]
RewriteRule ^([^.]+)\.homedir\.dk(.*)      /home/$1/html$2 [L]

får jeg bare i min error_log en besked om RewriteMap not allowed here...

Hvad kan det skyldes??

mod_rewrite er aktiv i Apache...
Avatar billede erikjacobsen Ekspert
13. september 2003 - 20:19 #1
Skal "RewriteEngine on" stå først?
Avatar billede jps2mt Nybegynder
13. september 2003 - 20:21 #2
Har jeg også prøvet, på allerførste linie, men det var samme resultat...
Avatar billede htm Nybegynder
13. september 2003 - 23:39 #3
Rewritemap, rewritelog og rewriteloglevel er kun tilladt i server config og virtual host

Det vil sige kun i httpd.conf. Du kører det sikkert fra .htaccess?
Avatar billede jps2mt Nybegynder
14. september 2003 - 00:21 #4
Som et lille tillæg, hvordan får man den stå til at kende forskel på store og små bogstaver??

Jeg har et par brugere der er oprettet med store bogstaver, og det duer jo ikke når den converter til lowercase...Det ville være smart om man kunne indtaste test.homedir.dk , og så den ville reagere med rette bruger, uanset om det vat Test, test eller TEST osv...Men det kan man vel ikke?!
Avatar billede htm Nybegynder
14. september 2003 - 01:34 #5
smid [NC] i enden ligesom du npgle steder har [L]

der står for no case.

der hvor du har [L] stående skal du ændre det til [L,NC]
Avatar billede jps2mt Nybegynder
14. september 2003 - 09:09 #6
Den omskriver det stadig til lowercase... :(
Avatar billede htm Nybegynder
14. september 2003 - 10:39 #7
Oooh misforstod dig. Du vil have at den bevarer sinurl i uppercase hvis den er skrevet sådan?

Nu kender jeg ikke lige lowercase i mod_rewrite - virker det? Men hvis det gør mon ikke at du så skal fjerne dem hvis du ønsker det du vil, smid så [NC] bagved i stedet.
Men ellers er der forskel på om du bruger Mozilla frem for Internet Explorer?
Avatar billede jps2mt Nybegynder
14. september 2003 - 11:22 #8
Har prøvet at slette alle de steder hvor der står lowercase, men så virker det slet ikke... :(
Avatar billede htm Nybegynder
14. september 2003 - 11:31 #9
Du skal selvfølgelig smide [NC] bagved i stedet!

Har du set om det er det samme i IE og mozilla?
Avatar billede jps2mt Nybegynder
14. september 2003 - 11:56 #10
Nej...Har kun IE inde...
Avatar billede htm Nybegynder
14. september 2003 - 11:57 #11
Jeg kunne nemlig odt forestille mig at det er en IE ting at lave om på adresselinien inden webserveren modtager den.

Jeg ved desværre ikke hvad det ellers kan være!
Avatar billede jps2mt Nybegynder
14. september 2003 - 12:01 #12
IE laver ikke om på den, men nu ser den således ud:

#RewriteMap lowercase int:tolower
RewriteEngine on
#RewriteCond ${%{HTTP_HOST}} !^$
#RewriteCond ${%{HTTP_HOST}} !^www\.homedir\.dk$

RewriteCond ${%{HTTP_HOST}} ^(www\.)([^.]+)\.homedir\.dk$
#RewriteRule ^(.+) ${%{HTTP_HOST}}$1 [C]
RewriteRule ^(www\.)([^.]+)\.homedir\.dk(.*) /home/$2/html$3 [NC]

RewriteCond ${%{HTTP_HOST}} ^(www\.)homedir\.dk$
#RewriteRule ^(.+) ${%{HTTP_HOST}}$1 [C]
RewriteRule ^(www\.)homedir\.dk(.*) /home/Morten/html/www.homedir.dk$2 [NC]

RewriteCond ${%{HTTP_HOST}} ^([^.]+)\.homedir\.dk$
#RewriteRule ^(.+) ${%{HTTP_HOST}}$1 [C]
RewriteRule ^([^.]+)\.homedir\.dk(.*)      /home/$1/html$2 [NC]

Det virker ikke...Det sender bare ALT til www.homedir.dk
Avatar billede htm Nybegynder
14. september 2003 - 14:13 #13
Er det noget du selv har brygget sammen eller er det noget du har fra en side? I så fald hvilken?

Hvad skal det?
Avatar billede jps2mt Nybegynder
14. september 2003 - 14:37 #14
Det er noget her fra eksperten...

Den skal lave virtualhosts udfra hvad der står foran homedir.dk eller mellem www. og homedir.dk

Altså http://www.test.homedir.dk og http://test.homedir.dk skal begge scare til en documentroot i /home/test/html
Avatar billede jps2mt Nybegynder
14. september 2003 - 14:38 #15
scare = svare
Avatar billede htm Nybegynder
14. september 2003 - 14:54 #16
Lader til at du skal kigge på dette lille eksempel:

RewriteMap lowercase int:tolower
RewriteEngine on
RewriteCond ${lowercase:%{HTTP_HOST}} !^$
RewriteCond ${lowercase:%{HTTP_HOST}} !^www\.homedir\.dk$

RewriteCond ${lowercase:%{HTTP_HOST}} ^(www\.)([^.]+)\.homedir\.dk$
RewriteRule ^(.+) ${lowercase:%{HTTP_HOST}}$1 [C]
RewriteRule ^(www\.)([^.]+)\.homedir\.dk(.*) /home/$2/html$3 [L]

RewriteCond ${lowercase:%{HTTP_HOST}} ^(www\.)homedir\.dk$
RewriteRule ^(.+) ${lowercase:%{HTTP_HOST}}$1 [C]
RewriteRule ^(www\.)homedir\.dk(.*) /home/Morten/html/www.homedir.dk$2 [L]

RewriteCond ${lowercase:%{HTTP_HOST}} ^([^.]+)\.homedir\.dk$
RewriteRule ^(.+) ${lowercase:%{HTTP_HOST}}$1 [C]
RewriteRule ^([^.]+)\.homedir\.dk(.*)      /home/$1/html$2 [L]

Taget fra http://httpd.apache.org/docs/misc/rewriteguide.html
Avatar billede htm Nybegynder
14. september 2003 - 14:55 #17
ups - dette er den rette kode:

RewriteEngine on
RewriteCond  %{HTTP_HOST}                ^www\.[^.]+\.host\.com$
RewriteRule  ^(.+)                        %{HTTP_HOST}$1          [C]
RewriteRule  ^www\.([^.]+)\.host\.com(.*) /home/$1$2
Avatar billede jps2mt Nybegynder
24. september 2003 - 17:01 #18
Jeg har nu langt om længe fået det her til at virke nogenlunde...Eneste problem er www.homedir.dk :(

Regelsættet ser således ud:

Rewritelog logs/rewrite.log
RewritelogLevel 9

#RewriteMap lowercase int:tolower
RewriteEngine on
RewriteCond ${%{HTTP_HOST}} !^$
RewriteCond ${%{HTTP_HOST}} !^www\.homedir\.dk$

RewriteCond %{HTTP_HOST} ^(www\.)([^.]+)\.homedir\.dk$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^(www\.)([^.]+)\.homedir\.dk(.*) /home/$2/html$3

RewriteCond %{HTTP_HOST} ^(www\.)homedir\.dk$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^(www\.)homedir\.dk(.*) /home/Morten/html/www.homedir.dk$2

RewriteCond %{HTTP_HOST} ^([^.]+)\.homedir\.dk$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+)\.homedir\.dk(.*)      /home/$1/html$2

Næstsidste skulle reagere på www.homedir.dk, hvilket den også gør...Men den nederste reagerer også...Kan man ikke lave et eller andet der får den til at stoppe når den har ramt en regel der matcher...

Homedir.dk ligger nemlig ikke i /home/www/html men i mit userdir (/home/Morten)...
Avatar billede htm Nybegynder
24. september 2003 - 18:15 #19
Tilføj [L] bagved de regler der skal være sidste regel...

Læs også her: http://httpd.apache.org/docs/mod/mod_rewrite.html#RewriteRule
Avatar billede jps2mt Nybegynder
25. september 2003 - 07:12 #20
Mange tak for hjælpen...Så virker det...
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