J’ai actuellement un site Web où il y a www.website.com/about.html
.
Cependant, si je tape www.website.com/about/
dans l’URL, la page d’erreur 404 s’affiche par défaut .
J’ai vu quelque chose à propos de l’édition du fichier htaccess, mais je ne sais pas trop comment procéder.
Ajoutez simplement cette ligne en haut de votre htaccess pour que votre extension d’URL soit moins longue:
Options +MultiViews
OU si vous préférez mod_rewrite
utilisez ce code dans votre fichier DOCUMENT_ROOT/.htaccess
:
RewriteEngine On # To externally redirect /dir/file.html to /dir/file RewriteCond %{THE_REQUEST} \s/+(?:index)?(.*?)\.html[\s?] [NC] RewriteRule ^ /%1 [R=301,L,NE] # To internally forward /dir/file to /dir/file.html RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{DOCUMENT_ROOT}/$1.html -f RewriteRule ^(.+?)/?$ /$1.html [L]
/about/
Est un directeur. Qui sur un serveur appellera le fichier index. * Dans ce répertoire à servir.
Appelez directement /about.html. Ou (plus éloquemment) mettre un index. * (Peut être html php peu importe) dans / about / à la place.
www.website.com/about.html
propose un fichier nommé about.html
stocké dans le dossier racine de votre application.
Lorsque vous essayez d’accéder à www.website.com/about/
cela signifie que vous essayez d’accéder à un fichier dans un dossier nommé “about” dans votre application. Ce que vous ne l’avez pas dans votre solution et vous obtenez une erreur.
Donc, la façon dont vous y accédez est fausse.
Essayez le code suivant pour supprimer .html et accéder au fichier auquel vous tentez d’accéder
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)\.html$ /$1 [L,R=301]
Comme vous voulez supprimer .html de votre URL d’application, vous n’avez pas besoin d’écrire .html dans vos liens de navigation, par exemple,
about
Comme mentionné dans anubhava, vous pouvez append cette ligne en haut de votre fichier .htaccess afin de réduire l’extension de vos URL: Options + MultiViews
Cependant, vous devez toujours y accéder en tant que
www.website.com/about
parce qu’avec
www.website.com/about/
vous allez au répertoire about à la place. J’espère que cela t’aides.
Vous devez apporter des modifications au fichier de configuration Apache pour cela. Cette question a déjà répondu ici: Comment supprimer .html de l’URL