Avatar billede danielks Nybegynder
03. januar 2003 - 02:04 Der er 50 kommentarer og
3 løsninger

404 side til server...

Jeg skal på en eller anden måde lave min egen 404 side der loader på min server hvis den efterspurgte side ikke findes...

Jeg skal også have lavet sådan at hvis en bruger skriver extern ip/ så åbnes filen index.html, index.htm eller index.php i htdocs mappen (skal også virke på undermapper)
(hvis index filen ikke eksistere skal den frembringe den førnævnte 404 side...
Avatar billede medions Nybegynder
03. januar 2003 - 02:05 #1
Avatar billede danielks Nybegynder
03. januar 2003 - 02:22 #2
nu snakker den om en .htaccess fil.... hvor er den ???
Avatar billede medions Nybegynder
03. januar 2003 - 02:27 #3
Læs dig til det... Det er vigtigt at få en go' forståelse:

http://www.webcafe.dk/artikler/apache/

//>Rune
Avatar billede danielks Nybegynder
03. januar 2003 - 03:02 #4
´ja jeg har læst det...

jeg har en fil ved navn: .htaccess liggende i min htdocs bibliotek indeholdende:

ErrorDocument 404 /404.php

og 404.php indeholder:

<html>
<head>
  <title>Page not found</title>
  <meta name="robots" value="none">
</head>
<body>
<h1>Siden blev ikke fundet</h1>

<?PHP

// define logfile:
// $logfile = $DOCUMENT_ROOT . "/404log.php";
$logfile = '';

// check that this is running as Apache module
if (!function_exists('virtual')) {
  echo "<h1>Error, not running as Apache module</h1>";}

// get name of the requested page
$request = rawurldecode($REQUEST_URI);
if(get_cfg_var('magic_quotes_gpc')) $request = stripslashes($request);

// check that this is not called directly
if ($request == $PHP_SELF) {
  echo "This page should not be called directly";
  exit;}

$req = htmlspecialchars ($request);

// Output text:
echo "<p>Desværre, siden <b>$req</b> eksisterer ikke på denne server!</p>\n";
echo "<p>Måske vil disse links hjælpe dig med at finde det du leder efter:</p>\n<ul>\n";

// write to logfile:
if ($logfile) {
  $handle = fopen($logfile,'a');
  if ($handle) {
    $reflink = "<a href='$HTTP_REFERER'>$HTTP_REFERER</a>";
    $dat = date('Y-m-d');
    fwrite($handle,"<tr><td>$req</td><td>$reflink</td><td>$dat</td></tr>\n");
    fclose($handle);}}

// output a lot of spaces to make sure Microsoft Internet Explorer 5.x doesn't
// display it's own "friendly" error page:
printf('%512s', ' ');

// You may add links to home, index, and search pages below:
?>

<li><a href="http://www.rolator.dk/">Tilbage til forsiden</a></li>
<li><a href="java script:history.go(-1)">Tilbage</a></li>

</ul>


</body>
</html>

Hvad skal jeg ellers gøre ???
Avatar billede madst Nybegynder
03. januar 2003 - 10:23 #5
Du har sikkert ikke tilladt at den slags ting kan gøres via htaccess.
Det gøres ved at sætte AllowOverride FileInfo i httpd.conf http://httpd.apache.org/docs/mod/core.html#allowoverride
Avatar billede danielks Nybegynder
03. januar 2003 - 13:11 #6
Det fatter jeg ikke meget af.... kan du ikke "lave" en til mig (det der skal sættes ind i httpd.conf
Avatar billede madst Nybegynder
03. januar 2003 - 13:32 #7
<Directory /docroot>
AllowOverride FileInfo
</Directory>

(/docroot skal naturligvis ændres til hvor din DocumentRoot peger)
Avatar billede htm Nybegynder
03. januar 2003 - 13:38 #8
I din httpd.conf står der

#
# This controls which options the .htaccess files in directories can
# override. Can also be "All", or any combination of "Options", "FileInfo",
# "AuthConfig", and "Limit"
#
    AllowOverride none

denne skal sættes til

    AllowOverride all

Dit errordocument skal være større end 500byte da Internet Explorer ikke regner mindre documenter for noget og erstatter dem med din egen fejlbesked.

Du skal også sørge for at stien er korrekt til dit document.
Avatar billede madst Nybegynder
03. januar 2003 - 13:49 #9
Der er en potetiel sikkerhedsrisiko i at sætte AllowOverride all.
Så længe der ikke er behov for mere end FileInfo, så bør man lade
være med at slå det til.
Generelt vil det iøvrigt være meget bedre at sætte ErrorDocument
i httpd.conf, da det performer bedre end htaccess og man behøver
så heller ikke tillade overrides.
Avatar billede danielks Nybegynder
03. januar 2003 - 14:12 #10
Oki giv et eksembel...

Og til jer der foreslog at gøre det.. jeg har prøvet, og det virker delvist...

f.eks dgidgfhkdgjfhkgjdfhkg.html virker det på

men hvis man blot skriver dumazz/ <--- en mappe der eksisterer kommer den almindelige fejl meddelse da den jo automatisk leder efter index.html.... men den skal også søge efter index.php hvilken den ikke gør...
Avatar billede htm Nybegynder
03. januar 2003 - 14:17 #11
For at den viser index.php skal du tilføje det her:
#
# DirectoryIndex: Name of the file or files to use as a pre-written HTML
# directory index.  Separate multiple entries with spaces.
#
<IfModule mod_dir.c>
    DirectoryIndex index.html
</IfModule>

Ang. at den kommer med den almindelige fejl kan have noget at gøre med at du har loadet php med php.exe Hvilke linier har du tiføjet til httpd.conf får at loade php?
Avatar billede madst Nybegynder
03. januar 2003 - 14:18 #12
DirectoryIndex index.html index.php

Præcist hvad ender i din access og error_log efter det sidste eksempel?
Avatar billede danielks Nybegynder
03. januar 2003 - 14:34 #13
madst> det virkede nu loader den index.php

men hvis jeg prøver det her kommet en "normal" fejl melding...¨¨

http://192.168.1.3/dumazz
Avatar billede danielks Nybegynder
03. januar 2003 - 14:34 #14
htm>

ScriptAlias /php/ "c:/apache/php/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php.exe
Avatar billede danielks Nybegynder
03. januar 2003 - 14:38 #15
access: 192.168.1.3 - - [03/Jan/2003:14:30:58 +0100] "GET /dumazz HTTP/1.1" 301 316
Avatar billede htm Nybegynder
03. januar 2003 - 14:40 #16
Prøv og load php med dll-filen i stedet!
Erstat ovenstående linier med dette hvis du bruger apache 1.x

LoadModule php4_module c:/programmer/php4/sapi/php4apache.dll
AddType application/x-httpd-php .php .php3 .phtml .php4

eller disse hvis du bruger apache 2.x

LoadModule php4_module c:/programmer/php4/sapi/php4apache2.dll
AddType application/x-httpd-php .php .php3 .phtml .php4
Avatar billede madst Nybegynder
03. januar 2003 - 14:44 #17
access: 192.168.1.3 - - [03/Jan/2003:14:30:58 +0100] "GET /dumazz HTTP/1.1" 301 316
er ikke en fejl - 301 står for Redirect - hvilket sker fordi du forsøger at
ramme et directory, men ikke har husket / til sidst - prøv igen med /dumazz/
Avatar billede danielks Nybegynder
03. januar 2003 - 14:45 #18
den dll fil har jeg slet ikke...
Avatar billede danielks Nybegynder
03. januar 2003 - 14:48 #19
madst> det er jeg godt klar over, men vil gerne kunne kalde et directory uden /

og hvis index.html eller index.php ikke kan findes skal der også frembringes en side sådan at man ikke får adgang til filerne...
Avatar billede htm Nybegynder
03. januar 2003 - 14:49 #20
Den ligger i det bibliotek du har installeret php! i stedet c:/apache/php
Avatar billede htm Nybegynder
03. januar 2003 - 14:54 #21
Du skal sætte
UseCanonicalName til off
og du skal have fat

# This may also be "None", "All", or any combination of "Indexes",
# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
    Options Indexes none

Så får brugeren forbidden i hovedet hvis de prøver at tilgå en mappe uden indexfil!
Avatar billede danielks Nybegynder
03. januar 2003 - 15:06 #22
der står iforvejen:

Indexes FollowSymLinks MultiViews

hvis jeg ændre det til Indexes none sker der ikke noget...

prøvede selv bare at skrive none, så virkede det (efter reload, første gang siden vises kommer der en dir)
Avatar billede madst Nybegynder
03. januar 2003 - 16:07 #23
right, man kan gøre to ting for at slå indexes fra - den almindelige er

Options -Indexes
(ikke 'Options Indexes none' som htm fejlagtigt skriver - det har modsat effekt)

Alternativt kan man sætte et fil ind i sin DirectoryIndex -
irectoryIndex index.html index.php /path/to/error.php
Avatar billede danielks Nybegynder
03. januar 2003 - 17:45 #24
Options -Indexes virker ligesom Options none.....

Når en mappe uden index fil åbnes kan alle filer i denne ses... Men hvis man opdaterer (F5) kommer den efterspurgte Forbidden...
Avatar billede madst Nybegynder
03. januar 2003 - 18:50 #25
Forskellen er at Options -Indexes eksplicit slår indexes fra, mens Options none slår alle options fra. Kombinationen af de to Options Indexes none ender kun med at virke fordi none overrider Indexes - men det er forkert.
Grunden til at det virker første gang er at din browser cacher siden fra det var tilladt - luk browseren og prøv igen eller tag en anden browser.
Avatar billede danielks Nybegynder
03. januar 2003 - 19:04 #26
oki hvordan forwarder jeg denne forbidden side til en anden side (skal blot være blank)
Avatar billede htm Nybegynder
03. januar 2003 - 19:07 #27
Denne forbiddenside hedder bare 403 i stedet for 404 tilføj den til din .htaccess
ErrorDocument 403 /403.php
Avatar billede danielks Nybegynder
03. januar 2003 - 19:15 #28
madst> smider du ikke et svar - synes du også skal have nogen...
Avatar billede danielks Nybegynder
03. januar 2003 - 19:18 #29
kan man lave sådan at kun index filer kan kører 'udefra' ???? sådan at der også kommer en fejl meddelse hvis de skriver f.eks... ip/migoghamder.html (hvis filen findes ?
Avatar billede madst Nybegynder
03. januar 2003 - 20:26 #30
>kan man lave sådan at kun index filer kan kører 'udefra' ???? sådan at der også kommer en fejl meddelse hvis de skriver f.eks... ip/migoghamder.html (hvis filen findes ?

<Directory /docroot/hest/>
<Files !~ "index\.html">
Deny from all
</Files>
Avatar billede danielks Nybegynder
04. januar 2003 - 00:37 #31
hvor skal det stå ??? i min .htaccess ?
Avatar billede madst Nybegynder
04. januar 2003 - 00:40 #32
den er lavet til httpd.conf og mangler iøvrigt en </Directory> som sidste linie.
Hvis du hælder den i en .htaccess så skal du ikke bruge
<Directory /docroot/hest/> og </Directory>.
Avatar billede danielks Nybegynder
04. januar 2003 - 00:49 #33
jeg har lagt den i min .htaccess - nu viser den en internal error on server page
Avatar billede danielks Nybegynder
04. januar 2003 - 00:51 #34
min htacces ser sådan ud

ErrorDocument 404 /404.php
ErrorDocument 403 /404.php
<Files !~ "index\.php">
Deny from all
</Files>

men alle sider selv index.php melder en fejl tilbage...
Avatar billede madst Nybegynder
04. januar 2003 - 18:53 #35
Et klip af fejlen fra din error_log ville være praktisk.
Avatar billede danielks Nybegynder
04. januar 2003 - 22:28 #36
[Sat Jan 04 22:23:11 2003] [alert] [client 192.168.1.3] c:/apache/htdocs/.htaccess: Multiple <Files> arguments not (yet) supported.
Avatar billede madst Nybegynder
05. januar 2003 - 01:04 #37
Multiple <Files> arguments

Har du selv lavet flere af dem - eller er der andre i httpd.conf der dækker
samme område?
Avatar billede danielks Nybegynder
05. januar 2003 - 01:25 #38
¨her er hele min .htaccess:

ErrorDocument 404 /404.php
ErrorDocument 403 /404.php
<Files !~ "index\.php">
Deny from all
</Files>
Avatar billede madst Nybegynder
05. januar 2003 - 01:44 #39
check din httpd.conf også
Avatar billede danielks Nybegynder
05. januar 2003 - 01:48 #40
fandt det her...

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>
Avatar billede danielks Nybegynder
05. januar 2003 - 01:51 #41
og forresten skal ErrorDocument 404 redirecte til en 404.php der befinder sig i en undermappe i root....

f.eks externip/dumazz/filderikkefindes.php skal redirecte til externip/dumazz/404.php

externip/webmate/filderikkefindes.php skal redirecte til externip/webmate/404.php
Avatar billede madst Nybegynder
05. januar 2003 - 09:42 #42
Så er det vist på tide at finde en RewriteRule frem (denne er igen lavet til
httpd.conf da performance er dårlig fra .htaccess):

RewriteEngine on
RewriteCond %{REQUEST_URI} !index\.php$
RewriteRule ^/dumbass/.+$ /path/to/404.php
Avatar billede danielks Nybegynder
05. januar 2003 - 11:07 #43
hvilken del er det svar på ?
Avatar billede danielks Nybegynder
05. januar 2003 - 11:13 #44
invalid command: RewriteEngine
Avatar billede danielks Nybegynder
05. januar 2003 - 11:15 #45
skriver ikke noget i hverken error eller access log....
Avatar billede madst Nybegynder
05. januar 2003 - 12:25 #46
Det er et alternativt forslag til hvordan du redirecter alt andet end index.php
til error siden - men fejlen opstår fordi din apache ikke har indbygget
mod_rewrite
Avatar billede danielks Nybegynder
05. januar 2003 - 13:20 #47
kan i ikke skrive videre på denne ???

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>

Den stopper jo adgang til .ht* dokumenter...
Avatar billede madst Nybegynder
05. januar 2003 - 13:26 #48
nej, det er ikke vejen at gå.
Avatar billede danielks Nybegynder
05. januar 2003 - 13:53 #49
mod_rewrite.... venligst forklar ?
Avatar billede danielks Nybegynder
05. januar 2003 - 14:48 #51
hvad skal jeg downloade ?
Avatar billede madst Nybegynder
05. januar 2003 - 16:20 #52
Den er en del af apache - men bliver bare ikke enablet pr default.

./configure --enable-module=rewrite
eller
./configure --enable-module=most --enable-shared=max
Avatar billede medions Nybegynder
13. januar 2003 - 21:10 #53
Thx 4 Poinz

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