it-swarm.com.de

Entfernen von .html und index.html aus der URL

Ich habe ein paar Probleme damit

  1. Entfernen Sie die HTML-Erweiterung von URLs
  2. 'Index.html' von einer URL entfernen

1) Um die Erweiterung zu entfernen, habe ich versucht, diese in meiner htaccess-Datei zu verwenden.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html

Wenn ich jedoch auf Links in meinem HTML-Code klicke, z. B. <a href="abcde.html"></a>, wird die HTML-Datei nicht aus der URL entfernt, und es verbleibt www.website.com/abcde.html.

2) Ich habe versucht, damit die index.html zu entfernen

RewriteCond %{THE_REQUEST} \/index\.(php|html)\ HTTP [NC]
RewriteRule (.*)index\.(php|html)$ /$1 [R=301,L]

Wenn ich jedoch eine index.html-Datei auf meinen Server lade, sieht meine URL ungefähr so ​​aus

www.website.com/folder//

Ich habe am Ende noch einen zusätzlichen /.

Kann mir jemand weiterhelfen?

3
James Turner

Aufbauend auf der Antwort von Anagio decken wir alle Ihre Anforderungen ab:

  • Stellen Sie HTML-Dateien transparent für Anforderungen wie /path/to/file bereit, wenn /path/to/file.html vorhanden ist
  • Direkte Anfragen gegen /path/to/file.html ablehnen
  • /index.html bei Anfragen gegen / servieren

Verzeichniskonfiguration:

Options +FollowSymLinks -MultiViews

DirectoryIndex index.html

RewriteEngine On
#
# Rewrite valid requests on .html files
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html?rw=1 [L,QSA]
#
# Return 404 on direct requests against .html files
RewriteCond %{REQUEST_URI} \.html$
RewriteCond %{QUERY_STRING} !rw=1 [NC]
RewriteRule ^ - [R=404]
2
danlefree

Dies ist von Stackoverflow

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On

# To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]
0
Anagio