Question

J'utilise mod_rewrite dans mon framework PHP pour rediriger des liens conviviaux vers un point d'entrée principal de l'application.Le fichier .htaccess que j'utilise ressemble à ceci:

<IfModule mod_rewrite.c>
    Options FollowSymLinks

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
 </IfModule>

Maintenant, j'aimerais utiliser cette règle avec la directive ErrorDocument.Comment dois-je faire cela?Mon framework définit le code de réponse sur 404 lorsqu'il manque un contrôleur:

    /**
     * Sets the HTTP response code.
     *
     * @param int $errorCode The response code to return. <b>Supported codes: </b>301, 307, 400, 401, 403, 404, 500,
     * 501, 502, 503
    */
    function setHTTPStatus($errorCode) {
        $httpStatusCodes = array(301 => 'Moved Permanently', 307 => 'Temporary Redirect', 400 => 'Bad Request',
            401 => 'Unauthorized', 403 => 'Forbidden', 404 => 'Not Found', 500 => 'Internal Server Error',
            501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable');

        if (array_key_exists($errorCode, $httpStatusCodes)) {
            header("HTTP/1.0 $errorCode $httpStatusCodes[$errorCode]", true, $errorCode);
            exit;
        }
    }

J'ai essayé d'ajouter la ligne ErrorDocument 404 /index.php?url=404 et ErrorDocument 404 /error mais aucune ne semble avoir fonctionné et j'obtiens la page d'erreur du navigateur par défaut.

Qu'est-ce qui ne va pas?

Merci.

Était-ce utile?

La solution

Il n'y a pas de moyen simple de le faire via le fichier .htaccess.Une fois que vous êtes dans le pays du code php, apache a traité le fichier .htaccess et les fichiers httpd.conf et fait un transfert vers le front des frameworks controller - dans ce cas, le fichier index.php pour le framework.

Quel framework utilisez-vous?

La meilleure façon de gérer cela est d'utiliser la gestion des erreurs du framework, et non la gestion intégrée d'Apache.L'apache 404 convient à toutes les pages non fournies par le framework comme une image, css, js, etc ... Votre framework devrait avoir un fichier de configuration quelque part pour définir la vue d'erreur par défaut.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top