Avatar billede bavingo Nybegynder
09. august 2009 - 00:22 Der er 10 kommentarer og
1 løsning

Htaccess Mod rewrite, fejler når jeg skal loade filer

Jeg sidder med et stort problem. Jeg forsøger at lave et website baseret på mod rewrite, men når jeg skal loade filer direkte fra en mappe, der reelt set eksisterer, loades filerne ikke.
Jeg ved det skyldes mit htaccess, da det virker når jeg deaktiverer disse. Det underlige i mine øjne er at jeg vil mene at jeg har deaktiveret at den kan overskrive eksisterende filer og mapper. Er der nogen der kan forklare hvad jeg gør galt?

Min kode er som følgende:
[code]
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([.A-Za-z0-9_-]+)/?$ index.php?1=$1
RewriteRule ^([.A-Za-z0-9_-]+)/([.A-Za-z0-9_-]+)/?$ index.php?1=$1&2=$2
RewriteRule ^([.A-Za-z0-9_-]+)/([.A-Za-z0-9_-]+)/([.A-Za-z0-9_-]+)/?$ index.php?1=$1&2=$2&3=$3
[/code]
Avatar billede Slettet bruger
09. august 2009 - 02:33 #1
Jeg ville mene at dit problem ligger i at du ikke 'sammensætter' eller 'linker' dine to RewriteCond udtryk sammen og derfor er det kun din sidste RewriteCond, som vil påvirke din RewriteRule.

Dog må jeg lige tilføje at min erfaring inden for htaccess ikke er specielt stor, og det er derfor kun et gæt, men hvis det er rigtigt, så betyder det at din RewriteRule smider alle src/href's til din index.php fil (dog kan du godt tilgå dine filer ved at skrive den direkte placering, ved at starte med et slash eller skrive hele url'en - "http://ditdomain.dk/style.css" eller "/style.css" istedet for "style.css").

Så hvis jeg var dig ville jeg prøve at smide en [OR] ind efter din første RewriteCond så det ville blive noget lign.:

RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d

Ville dog selv mene at en slags "AND" ville passe bedre, men som sagt er min erfaring lidt tynd inden for det her og kender derfor kun til [OR]

Håber det kan hjælpe på dit problem
Avatar billede bavingo Nybegynder
09. august 2009 - 11:17 #2
Jeg vil lige prøve at teste det lidt frem og tilbage, også vender jeg lige tilbage. Indtil videre tak :D
Avatar billede bavingo Nybegynder
09. august 2009 - 11:21 #3
Nu har jeg testet det lidt frem og tilbage, og indsætter jeg [OR], er der ingen af mine virtuelle sider der kan loades. Indsætter jeg derimod [AND], får jeg selver error 500.
Avatar billede bavingo Nybegynder
09. august 2009 - 11:27 #4
Lige en forglemmelse.

Jeg skriver allerede hele URL'en når jeg linker til mine billeder.
Avatar billede Slettet bruger
09. august 2009 - 12:25 #5
Okay jeg sidder og tygger lidt på dine htaccess koder..
For det første får du error 500 når du bruger [AND] da den ikke findes, dvs. det kun er [OR] der kan bruges i den sammenhæng ([OR] = or next]
For det andet så giver din %{REQUEST_FILENAME} ikke det forventede output. Jeg prøvede at outputte hvad den så når jeg skrev følgende url:
http://mitdomain.dk/test/me/now/

output var:
/mitdomain.dk/test

Jeg prøvede derfor så at outputte %{REQUEST_URI} istedet og fik følgende output:
/test/me/now/

Sidder stadig og kigger lidt på og skal nok komme tilbage når jeg har mere at fortælle, forhåbentligt kommer der en forbi som kan udpege fejlen med det samme!
Avatar billede bavingo Nybegynder
09. august 2009 - 12:54 #6
Nu har jeg selv fundet en delvis løsning. Hvis jeg gentager mine 2 RewriteCond's for alle RewriteRule's virker det. Dette virker dog i mine øjne ikke som en løsning der giver mening. Det virker som rent overkill at skulle gentage den samme kode så mange gange.

Dvs. kode er som følgende nu:
[code]
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([.A-Za-z0-9_-]+)/?$ index.php?1=$1

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([.A-Za-z0-9_-]+)/([.A-Za-z0-9_-]+)/?$ index.php?1=$1&2=$2

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([.A-Za-z0-9_-]+)/([.A-Za-z0-9_-]+)/([.A-Za-z0-9_-]+)/?$ index.php?1=$1&2=$2&3=$3

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([.A-Za-z0-9_-]+)/([.A-Za-z0-9_-]+)/([.A-Za-z0-9_-]+)/([.A-Za-z0-9_-]+)/?$ index.php?1=$1&2=$2&3=$3&4=$4
[/code]

Det ser meget sjusket ud, selvom det virker og der må være en nemmere måde?
Avatar billede Slettet bruger
09. august 2009 - 12:58 #7
Okay jeg har fundet frem til en løsning der så vidt jeg kan se virker.
Dog er der lidt andre 'fejl' i din .htaccess som jeg stødte på.

Den nye koder (der virker hos mig):
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([.A-Za-z0-9_-]+)/?$ index.php?1=$1
RewriteRule ^([.A-Za-z0-9_-]+)/([.A-Za-z0-9_-]+)/?$ index.php?1=$1&2=$2
RewriteRule ^([.A-Za-z0-9_-]+)/([.A-Za-z0-9_-]+)/([.A-Za-z0-9_-]+)/?$ index.php?1=$1&2=$2&3=$3


Jeg har ændret alle dine &'s til &'s da 'amp' kom med i url'en.
&2 blev til &2 osv.

Dog skal du huske på dine RewriteRules ikke går ud i det uendelige, men automatisk stopper ved 3 led (mitdomain.dk/første-led/andet-led/tredje-led), så hvis du sætter et led mere på læser den det som en fil eller mappe.

Jeg håber ovenstående kode kan hjælpe dig vidre - det er så surt når .htaccessen snupper alle ens src/href's på siden inden de kommer ud til klienten!
Avatar billede bavingo Nybegynder
09. august 2009 - 14:39 #8
Har prøvet den seneste udgave du sendte mig, og den virker desværre heller ikke. Indtil nu er det kun, hvis jeg vedhæfter mine RewriteCond's ved hver enkelt RewriteRule.

Mht. dybden, går de også meget dybere, pt. går den ned til 10, og er ved at lave den skalerbar, så systemet selv tilføjer flere, hvis systemet skulle kræve det.
Avatar billede bavingo Nybegynder
09. august 2009 - 17:00 #9
Jeg tror jeg holder mig til den løsning jeg har nu, også må jeg leve med det indtil jeg finder en anden løsning.

Læg et svar og jeg giver dig point og tak for hjælpen.
Avatar billede Slettet bruger
10. august 2009 - 09:24 #10
Det var underligt, det virker hos mig... men ellers tak, jeg fik jo ikke ordnet dit problem, så behold du bare dine points.
Avatar billede bavingo Nybegynder
10. august 2009 - 12:31 #11
Ok, så lukker jeg. Takker for dine forsøg i hvert fald :D
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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