Comment puis-je capturer un chemin d’URL local complet avec réécriture de mod?
Par exemple, mon projet se trouve dans http://{localhost}/projects/mywebsite/index.php
J’ai essayé avec cette RewriteBase /projects/mywebsite/
mais cela ne fonctionne pas pour ErrorDocument
.
mon .htaccess,
RewriteEngine on RewriteBase /projects/mywebsite/ ErrorDocument 404 /error.php
Je dois faire ErrorDocument 404 /projects/mywebsite/error.php
mais ce n’est pas dynamic. Je dois le changer à deux endroits chaque fois pour chaque projet.
Des idées?
ErrorDocument
n’accepte aucune variable env contrairement aux règles mod_rewrite
. Voici ce que vous pouvez faire:
ErrorDocument
utilisez les règles mod_rewrite
pour gérer les problèmes 404 (voir ci-dessous) RewriteBase
aide de règles Vous pouvez utiliser ce code dans votre racine .htaccess:
RewriteEngine On RewriteBase / # Determine the RewriteBase automatically/dynamically RewriteCond %{REQUEST_URI}::$1 ^(.*?/)(.*)::\2$ RewriteRule ^(.*)$ - [E=BASE:%1] # use %{ENV:BASE} variable set above for routing file/dir not found RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule . %{ENV:BASE}error.php?e=404 [L,QSA]
Le ErrorDocument
fait partie du kernel apache, il n’est pas affecté par les éléments Rewrite qui sont un module complètement séparé.
Si vous avez besoin de sortir le contenu de error.php
, alors error.php
-le de l’en-tête php (basé sur votre question précédente) et ne vous fiez pas à ErrorModule. Peut-être que quelque chose comme:
header("HTTP/10 404 Not Found"); include("error.php");