Mads-b Skrevet 22. september 2005 Del Skrevet 22. september 2005 Nå har jeg satt opp en apache server her hjemme og satt inn PHP og aktivert modul mod_rewrite. likevel nekter følgende kode å virke: ¨ RewriteEngine on RewriteRule !\.(gif|jpg|jpeg|png|css)$ /sub2/index.php Denne .htaccess filen ligger i http://localhost/ og den skal egentlig sende alle forespørsler til http://localhost/sub2/index.php Men det nekter den altså. Hvis jeg skriver http://localhost/ i tittellinjen, får jeg dokumenttreet, ikke indexen jeg vil ha. Noen forslag? Lenke til kommentar
Jesper Karsrud Skrevet 22. september 2005 Del Skrevet 22. september 2005 Lagt i htdocs-mappen? Der må man i hvertfall legge alle dokumenter med Xampp som serverpakke... Lenke til kommentar
Mads-b Skrevet 22. september 2005 Forfatter Del Skrevet 22. september 2005 Hele testsidearkivet ligger i htdocs. Meningen med denne testingen var å klargjøre et PHP system for nett uten å påføre andre nedetid. Men da lurer jeg på om det er noe galt med koden i .htaccess som gjør det, eller om det bare er mine instillinger. Er det noe i httpd.conf jeg må endre på? Lenke til kommentar
Jakob K Skrevet 22. september 2005 Del Skrevet 22. september 2005 Er det noe i httpd.conf jeg må endre på? Du må vel aktivere og laste modulen, ja. Disse to linjene må være ukommentert eller tilføyd i konfigurasjonsfilen: LoadModule rewrite_module modules/mod_rewrite.so AddModule mod_rewrite.c Eventuelt, hvis du har to mapper som heter mods-available og mods-enabled, kopierer du rewrite.load og rewrite.conf fra available til enabled-mappen. Lenke til kommentar
Mads-b Skrevet 22. september 2005 Forfatter Del Skrevet 22. september 2005 Jeg har ikke mappene du beskriver, jeg har enablet mod_rewrite ved å fjerne # tegnet, men når jeg skriver inn AddModule mod_rewrite.c får jeg runtime error? Ett raskt søk senere og filen eksisterer ikke. Lenke til kommentar
Lokaltog Skrevet 23. september 2005 Del Skrevet 23. september 2005 I tillegg må du sjekke at du har tilgang til å endre innstillinger per-dir med .htaccess. Det gjøres enkelt ved å sette AllowOverride All for den mappen det gjelder i httpd.conf. Hvis du ikke får 500 Internal Server Error når du prøver å starte mod_rewrite med RewriteEngine On, så er mod_rewrite aktivert. Hvis du kjører under linux må du kompilere inn mod_rewrite, jeg tror ikke det er nok å fjerne # i httpd.conf som foreslått her. Lenke til kommentar
Mads-b Skrevet 23. september 2005 Forfatter Del Skrevet 23. september 2005 Jeg prøvde allow override, og fikk internal server error. Hva gjør jeg? Kjører systemet under winXP Lenke til kommentar
Lokaltog Skrevet 23. september 2005 Del Skrevet 23. september 2005 Jeg prøvde allow override, og fikk internal server error. Hva gjør jeg? Kjører systemet under winXP Hvis du skrev AllowOverride All og deretter fikk en 500-feil, har du sannsynligvis ikke aktivert mod_rewrite. Følg bruksanvisningen et par poster over her for å gjøre det. Lenke til kommentar
Mads-b Skrevet 23. september 2005 Forfatter Del Skrevet 23. september 2005 Jeg prøvde allow override, og fikk internal server error. Hva gjør jeg? Kjører systemet under winXP Hvis du skrev AllowOverride All og deretter fikk en 500-feil, har du sannsynligvis ikke aktivert mod_rewrite. Følg bruksanvisningen et par poster over her for å gjøre det. Hmm.. får 500 feil uansett.. Hvilke instruksjoner snakket du om? AfroDude sine? AddModule funket dårlig. Da vil ikke apache starte engang. Legger ved min httpd.conf fil. Kan dere finne feilen? httpd.conf Lenke til kommentar
Lokaltog Skrevet 23. september 2005 Del Skrevet 23. september 2005 Da er det 99% sikkert rewriteregelen din som er feilen. Lenke til kommentar
Mads-b Skrevet 23. september 2005 Forfatter Del Skrevet 23. september 2005 (endret) Kan du hjelpe meg med den? planen var å sende alle etterspørsler til index.php unntatt filendelsene spesifisert før URIen. Forslag til regular expression? EDIT: følgende melding dukker opp i loggen etter hver spørring: [sat Sep 24 01:01:16 2005] [error] [client 127.0.0.1] mod_rewrite: maximum number of internal redirects reached. Assuming configuration error. Use 'RewriteOptions MaxRedirects' to increase the limit if neccessary. Farlig loop? Endret 23. september 2005 av MBaardsgaard Lenke til kommentar
Mads-b Skrevet 24. september 2005 Forfatter Del Skrevet 24. september 2005 Nå virker det som om at .htaccess filen funker. følgnede kode brukes: RewriteRule !\.(gif|jpg|png|css)$ \sub2/index.php Men når jeg fyrer opp localhost, knaser maskinen, spiser RAM, får feil og avslutter. Da er error.log på 1 MB. Dette er det som står: [client 127.0.0.1] PHP Notice: Undefined offset: 2 in D:\\Webdesign\\apache\\Apache2\\htdocs\\sub2\\index.php on line 81 [client 127.0.0.1] PHP Notice: Undefined index: HTTP_USER_AGENT in D:\\Webdesign\\apache\\Apache2\\htdocs\\sub2\\index.php on line 33 Linje 33 og 81 i phpscriptet: if (preg_match("/msie.[4|5|6]/i",$_SERVER["HTTP_USER_AGENT"])) { $sistelinkt = $url[$sistelink]; Lenke til kommentar
Lokaltog Skrevet 25. september 2005 Del Skrevet 25. september 2005 Altså, hvis dette er på en WinXP-maskin, så har du helt fra starten av gjort en stor tabbe. Forandre /sub2/index.php til sub2/index.php, og sjekk om det funker da. Når man kjører på med /sub2/index.php, vil Apache sannsynligvis lete etter en 404-feilside, men havner i en evig loop med rewriterulen din isteden. Prøv om det funker med det jeg skrev nettopp. Lenke til kommentar
Mads-b Skrevet 25. september 2005 Forfatter Del Skrevet 25. september 2005 Jeg får en evig loop også etter å ha fjernet den første skråstreken.. Lenke til kommentar
Mads-b Skrevet 15. oktober 2005 Forfatter Del Skrevet 15. oktober 2005 Nå har jeg fått alt til å fungere; på sparebluss. Ved å bruke koden under og å få index.php til å inkludere .txt filer går alt bra. Inkluderer den .php filer sitter jeg fast i en evig loop. RewriteEngine On RewriteRule !\.(gif|jpg|png|css|ico|txt)$ sub0/index.php Men hadde bare .txt vært problemet, kunne jeg levd med det. file_exists() returnerer false fra index.php uansett hva jeg gjør, så da trengte jeg en ny kode. Dette ble etter en del lesing skrevet: RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://localhost/sub0/index.php [NC] RewriteRule !\.(gif|jpg|png|css|ico|txt)$ sub0/index.php [L] Planen var å sende alle forespørsler til index.php MEN hvis man allerede kom fra index.php, skuille man ha fritt leide. i teorien skal det fungere. Men på grunn av disse to ekstra linjene, blir ikke .htaccess rørt av apache i det hele tatt (det virker ihvertfall ikke sånn). Her er det dermed noe fundamentalt galt. Må jeg escape alle skråstrekene i linje 3? PS: Beklager for bumping på en så gammel post Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå