[HTACCESS] Parameter in ErrorDocument werkt niet

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

Topicstarter
Om short-urls te gebruiken maak ik gebruik van een .htaccess, dat ziet er als volgt uit.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<Files *.php>
    Order Deny,Allow
    Deny from all
</Files>

<Files index.php>
    Order Allow,Deny
    Allow from all
</Files>

Options -Indexes

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) index.php?e=OK&q=$1 [L,QSA]

ErrorDocument 403   /index.php?e=403&q=$l


Ga ik naar een URL die niet bestaat flag ik 'm als 'OK' een handel ik het request in de index.php verder af. Wanneer er naar een URL wordt gesurft die in de directorytree wèl bestaat flag ik 'm als een 403.

Mijn index.php ziet er als volgt uit:
PHP:
1
2
3
4
5
<?PHP
if (isset($_GET['q']) && isset($_GET['e'])) {
    $log = $_GET['e'] . " | " . $_GET['q'] . PHP_EOL;
    file_put_contents('logs.txt', $log, FILE_APPEND | LOCK_EX);
}


Nadere inspectie van het log-bestand laat het volgende zien:
code:
1
2
OK | deze/map/bestaat/niet
403 | $l


De gelogde 403 is dus het benaderen van een folder die wel bestaat op de server. Probleem is echter dat .htaccess $l als tekst meestuurt en niet als parameter/var. Heb hier uitgebreid naar gegoogled maar wordt er echt geen steek wijzer van, weet iemand wat hier fout gaat? :>

Hoeder van het Noord-Meierijse dialect

Beste antwoord (via Harrie_ op 25-08-2017 13:12)


  • ThomasG
  • Registratie: Juni 2006
  • Laatst online: 15:45
ErrorDocument is geen onderdeel van mod_rewrite, en dat werkt dus niet op die manier. Op Apache 2.4 en later kun je het met %{REQUEST_URI} proberen.
code:
1
ErrorDocument 403 /index.php?e=403&q=%{REQUEST_URI}


Anders zul je het met PHP uit de request moeten halen, waarvan ik niet zeker weet welke header het is. Je kunt kunt de $_SERVER array bekijken, en daar zal iets van REDIRECT_URI inzitten met de originele URI.

PHP:
1
print_r($_SERVER);

Alle reacties


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • ThomasG
  • Registratie: Juni 2006
  • Laatst online: 15:45
ErrorDocument is geen onderdeel van mod_rewrite, en dat werkt dus niet op die manier. Op Apache 2.4 en later kun je het met %{REQUEST_URI} proberen.
code:
1
ErrorDocument 403 /index.php?e=403&q=%{REQUEST_URI}


Anders zul je het met PHP uit de request moeten halen, waarvan ik niet zeker weet welke header het is. Je kunt kunt de $_SERVER array bekijken, en daar zal iets van REDIRECT_URI inzitten met de originele URI.

PHP:
1
print_r($_SERVER);

Acties:
  • 0 Henk 'm!

  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

Topicstarter
@ThomasG d:)b works like a charm!

Hoeder van het Noord-Meierijse dialect