Occi Skrevet 13. november 2011 Del Skrevet 13. november 2011 Hei, Først; litt usikker på om dette er seksjonen å poste slikt i, da det ikke er PHP-programmering. Allikevel er det vel denne seksjonen hvor Apache er mest relevant. Har problemer med å få ErrorDocument til å fungere forskjellig på forskjellige VirtualHosts. Har snakket litt med noen folk på IRC og kan virke som om Apache blander sammen erroren 404 pga. den er global ble det sagt(?). F. eks så prøver den å laste 404.html, selv om jeg har satt den som en helt annen fil i VirtualHosten som er brukt der og da. Det er hovedsaklig på www.minside.no som det er viktig at jeg får det til å fungere, da dette er en bedriftsside. Skissering av hvordan httd.conf'en min ser ut: # www.example.com <VirtualHost ip:80> ServerName www.example.com DocumentRoot /var/www/ ErrorDocument 404 /404.html ErrorLog /var/log/apache2/error.log </VirtualHost> # www.foo.com <VirtualHost ip:80> ServerName www.foo.com DocumentRoot /var/www/foo ErrorDocument 404 /404.html ErrorLog /var/log/apache2/error.log </VirtualHost> # www.minside.no <VirtualHost ip:80> ServerName www.minside.no DocumentRoot /var/www/minside ErrorDocument 404 /index.php?p=404 ErrorLog /var/log/apache2/error.log </VirtualHost> Og her er hva error-loggen sier om jeg går inn på www.minside.no/asdf. Merk at dette er for en request, selv om det er flere 404.html som lastes. Jeg bruker dessuten favicon.png, ikke .ico på alle sidene mine, så vet ikke helt hvor den kommer fra. Kanskje Chromium som prøver å laste ved standard 404-error. [sun Nov 13 04:13:40 2011] [error] [client <ip>] File does not exist: /var/www/minside/asdf [sun Nov 13 04:13:40 2011] [error] [client <ip>] File does not exist: /var/www/minside/404.html [sun Nov 13 04:13:40 2011] [error] [client <ip>] File does not exist: /var/www/minside/favicon.ico [sun Nov 13 04:13:40 2011] [error] [client <ip>] File does not exist: /var/www/minside/404.html Resultatet av www.minside.no/asdf er en standard 404-side laget av Apache. Legg derimot merke til 'Additonally [...]'-biten. Not FoundThe requested URL /asdf was not found on this server. Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request. Apache/2.2.16 (Debian) Server at www.elks.no Port 80 Så ja, hvordan går jeg frem for å sette opp custom 404 for alle mine VirtualHost's? Lenke til kommentar
Thomas. Skrevet 13. november 2011 Del Skrevet 13. november 2011 Jeg tror ikke du kan skrive argumenter i URLen her. ErrorDocument 404 /index.php?p=404 Prøvd å skrive full URL? ErrorDocument 404 http://minside.no/index.php?p=404 Lenke til kommentar
Occi Skrevet 13. november 2011 Forfatter Del Skrevet 13. november 2011 (endret) Jeg har prøvd å skrive dette for å teste, men det fungerte heller ikke. ErrorDocument 404 /404.php Om du skriver full url så blir det tolket som ekstern host, og dermed en redirect. Derfor vil ikke webroboter behandle det som feilen som gis ut (404), og det er derfor ingen god idé å bruke full url. Kilde: Note that when you specify an ErrorDocument that points to a remote URL (ie. anything with a method such as http in front of it), Apache will send a redirect to the client to tell it where to find the document, even if the document ends up being on the same server. This has several implications, the most important being that the client will not receive the original error status code, but instead will receive a redirect status code. This in turn can confuse web robots and other clients which try to determine if a URL is valid using the status code. Forøvrig fungerer det heller ikke hos meg ved bruk av ekstern host. Endret 13. november 2011 av Occi Lenke til kommentar
forvirretoggal Skrevet 14. november 2011 Del Skrevet 14. november 2011 Jeg har prøvd å skrive dette for å teste, men det fungerte heller ikke. ErrorDocument 404 /404.php Om du skriver full url så blir det tolket som ekstern host, og dermed en redirect. Derfor vil ikke webroboter behandle det som feilen som gis ut (404), og det er derfor ingen god idé å bruke full url. Kilde: Note that when you specify an ErrorDocument that points to a remote URL (ie. anything with a method such as http in front of it), Apache will send a redirect to the client to tell it where to find the document, even if the document ends up being on the same server. This has several implications, the most important being that the client will not receive the original error status code, but instead will receive a redirect status code. This in turn can confuse web robots and other clients which try to determine if a URL is valid using the status code. Forøvrig fungerer det heller ikke hos meg ved bruk av ekstern host. Får du opp den forventede 404 siden dersom du går til www.example.com/404.html eller www.foo.com/404.html ? Dersom du skriver en beskjed direkte (ErrorDocument 404 "Skriv din beskjed her"), kommer den opp dersom du går til en side som ikke eksisterer? Lenke til kommentar
Occi Skrevet 14. november 2011 Forfatter Del Skrevet 14. november 2011 (endret) Det fungerer å skrive ErrorDocument 404 /404.html Men da får jeg ikke sendt til en underside á www.example.com/?p=404 for å kjøre include på head/footer og slikt. ErrorDocument 404 "Denne siden eksisterer ikke" Gir samme feilmeldingen som ved bruk av .php-fil, nemlig standard apache 404-error. Jeg tror det må være noe med instillingene, for jeg har sett eksempler av kode hvor man har brukt filer som ender med .php eller url á ?p=404 (dog kun ved bruk av .htaccess, da nettet er overfylt av .htaccess info). Endret 14. november 2011 av Occi Lenke til kommentar
forvirretoggal Skrevet 14. november 2011 Del Skrevet 14. november 2011 Det fungerer å skrive ErrorDocument 404 /404.html Men da får jeg ikke sendt til en underside á www.example.com/?p=404 for å kjøre include på head/footer og slikt. ErrorDocument 404 "Denne siden eksisterer ikke" Gir samme feilmeldingen som ved bruk av .php-fil, nemlig standard apache 404-error. Jeg tror det må være noe med instillingene, for jeg har sett eksempler av kode hvor man har brukt filer som ender med .php eller url á ?p=404 (dog kun ved bruk av .htaccess, da nettet er overfylt av .htaccess info). Vil anbefale deg å se på mod_rewrite for å finne løsningen. Jeg har brukt mod_rewrite litt før, men det er lenge siden sist jeg holdt på med avansert konfigurasjon av Apache. [QUERY_STRING] => e=404 og Emulating ErrorDocuments with Mod_Rewrite ^ The ErrorDocument directive is helpful because an errordocument is called differently then a normal file' date=' and it contains special variables to help an admin debug. I've wanted to use a RewriteCond + a RewriteRule to cause an Apache ErrorDocument to be displayed for a long time... I finally figured it out. Simply use the HTTP STATUS CODE trick in combination with a simple RewriteRule to trigger an Apache ErrorDocument. This code emulates the internal 404 process Apache goes through.. If the file is not found it requests the /test/trigger-error/404 internally which triggers the 404 ErrorDocument. ErrorDocument 404 /test/errordocument/404.html Redirect 404 /test/trigger-error/404 RewriteEngine On RewriteBase / RewriteCond %{ENV:REDIRECT_STATUS} !=404 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* /test/trigger-error/404 [L'] Big Deal.. you might say... well consider that this works with any status code, and using this method you now have the power to trigger any errordocument page based on any kind of rewritecond. I'll be writing about some practical uses for this powerful method in the coming weeks, but heres a good example now so you can see how it can be used. This bit of code Triggers the 505 HTTP Version Not Supported When a request is made to the server with a protocol other than 1.1. Kilde: avansert bruk av mod_rewrite Lenke til kommentar
Occi Skrevet 14. november 2011 Forfatter Del Skrevet 14. november 2011 (endret) Virket som en fin side det der, men som så altfor mange andre sider jeg har vært innom så beskriver også den prosessen med bruk av .htaccess, og jeg har ikke nok kunnskaper til å overføre mod_rewrite-koden direkte til VirtualHost :\ Dessuten, må jeg virkelig ty til mod_rewrite for å bruke .php-filer (med argumenter vha. get)? Har sett guider hvor folk bare skriver det rett inn uten noe mer, men de bruker .htaccess og kanskje det er satt noe i httpd.conf for at det skal fungere som de ikke vet om? Jeg har en VPS med root-tilgang og regelen tilsier jo at om du har tilgang til httpd.conf, så bruk alltid det i stedet for .htaccess. Ryddigere, raskere og lettere. Så hadde vært flott om jeg slapp å dele konfigurasjonen min mellom httpd.conf og noen .htaccess-filer her og der plutselig. Endret 14. november 2011 av Occi Lenke til kommentar
forvirretoggal Skrevet 14. november 2011 Del Skrevet 14. november 2011 Virket som en fin side det der, men som så altfor mange andre sider jeg har vært innom så beskriver også den prosessen med bruk av .htaccess, og jeg har ikke nok kunnskaper til å overføre mod_rewrite-koden direkte til VirtualHost :\ Dessuten, må jeg virkelig ty til mod_rewrite for å bruke .php-filer (med argumenter vha. get)? Har sett guider hvor folk bare skriver det rett inn uten noe mer, men de bruker .htaccess og kanskje det er satt noe i httpd.conf for at det skal fungere som de ikke vet om? Jeg har en VPS med root-tilgang og regelen tilsier jo at om du har tilgang til httpd.conf, så bruk alltid det i stedet for .htaccess. Ryddigere, raskere og lettere. Så hadde vært flott om jeg slapp å dele konfigurasjonen min mellom httpd.conf og noen .htaccess-filer her og der plutselig. Er helt enig med deg i det. Dog må man i httpd.conf (eller vhost.conf filen) enable AllowOverride for at .htaccess filer skal kunne override konfigurasjonen i httpd.conf. I bunn og grunn, kan det settes inn i en .htaccess fil så kan det også settes inn i en .conf fil. Dersom du har mulighet, test det på en annen vps før du overfører endringen(e) til serveren du har nå. Lenke til kommentar
Occi Skrevet 14. november 2011 Forfatter Del Skrevet 14. november 2011 (endret) Jepps, har skjønt at de samme funksjonene/metodene skal fungere i httpd.conf også, men tror kanskje jeg må bruke <Directory> i stedet for <VirtualHost> om jeg skal begynne med Rewriting, er litt usikker nemlig. Har mulighet til å installere Apache lokalt og teste, men vil gjerne prøve å få det helt klart om hvorvidt man må bruke rewriting eller ei når man skal benytte seg av .php-filer som ErrorDocument, og da gjerne også med argumenter som nevnt (get, ?p=404). Tror du at det i utgangspunktet burde ha fungert med ErrorDocument 404 /404.php, eller ikke? Fordi som nevnt så finner jeg andre som har skrevet dette på nettet, men det fungerer jo rett og slett ikke Edit: Hahah er det mulig! Var en .htaccess-fil i ServerRoot som jeg hadde glemt helt! Må ha vært fra starten når jeg ikke kunne helt dette her med httpd.conf og bare fulgte guider helt braindead. Så pinlig Nå fungerer det ypperlig med å rett og slett skrive: ErrorDocument 404 /?p=404 Trenger faktisk ingenting mer! Resultatet kan sees her. Ingenting fancy menmen. Endret 14. november 2011 av Occi Lenke til kommentar
forvirretoggal Skrevet 14. november 2011 Del Skrevet 14. november 2011 Jepps, har skjønt at de samme funksjonene/metodene skal fungere i httpd.conf også, men tror kanskje jeg må bruke <Directory> i stedet for <VirtualHost> om jeg skal begynne med Rewriting, er litt usikker nemlig. Har mulighet til å installere Apache lokalt og teste, men vil gjerne prøve å få det helt klart om hvorvidt man må bruke rewriting eller ei når man skal benytte seg av .php-filer som ErrorDocument, og da gjerne også med argumenter som nevnt (get, ?p=404). Tror du at det i utgangspunktet burde ha fungert med ErrorDocument 404 /404.php, eller ikke? Fordi som nevnt så finner jeg andre som har skrevet dette på nettet, men det fungerer jo rett og slett ikke Edit: Hahah er det mulig! Var en .htaccess-fil i ServerRoot som jeg hadde glemt helt! Må ha vært fra starten når jeg ikke kunne helt dette her med httpd.conf og bare fulgte guider helt braindead. Så pinlig Nå fungerer det ypperlig med å rett og slett skrive: ErrorDocument 404 /?p=404 Trenger faktisk ingenting mer! Resultatet kan sees her. Ingenting fancy menmen. Hehe kjenner meg godt igjen i det. Det skjer med alle at man overser den enkle løsningen på problemet da man tenker for avansert med en gang. Lenke til kommentar
Occi Skrevet 14. november 2011 Forfatter Del Skrevet 14. november 2011 Lærer av sine feil og, da veit jeg at jeg burde sjekke slikt neste gang først i alle fall! Takker for at du tok deg tid til mitt merkelige problem i alle fall, ikke rart de fleste jeg spurte bare ga opp etter en stund Lenke til kommentar
forvirretoggal Skrevet 14. november 2011 Del Skrevet 14. november 2011 Lærer av sine feil og, da veit jeg at jeg burde sjekke slikt neste gang først i alle fall! Takker for at du tok deg tid til mitt merkelige problem i alle fall, ikke rart de fleste jeg spurte bare ga opp etter en stund null problem 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å