Gå til innhold

.htaccess virker ikke på lokal server


Anbefalte innlegg

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
Videoannonse
Annonse

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
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

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
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

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 av MBaardsgaard
Lenke til kommentar

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

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
  • 3 uker senere...

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...