Zunächst einmal weiß ich, dass es viele ähnliche Fragen gibt. Ich habe alles gelesen, was ich finden kann, aber die Lösungen, die ich woanders sehe, scheinen nicht für mich zu funktionieren. Ich hoffe wirklich, dass mir jemand hier einen Einblick geben kann.Dateierweiterung verstecken und auf https umleiten
Ich versuche Apaches .htaccess
Direktiven zu verwenden, um spezifische Seiten auf meinem Server zu zwingen, ssl zu verwenden. Zusätzlich zu diesen Direktiven verwende ich auch einige Umschreibungen, um die Erweiterungen .php
und .html
zu maskieren.
Ich habe eine Seite erstellt, https-test.html
. Ich mag die Seite speziell auf immer weitergeleitet, damit es https verwendet und damit .html
abgezogen wird, wie https://www.example.com/https-test
aber ich scheine immer mit einer Schlaufe am Ende. Das Lesen der Apache-Dokumente für 6 Stunden brachte mich näher, aber mir fehlt noch etwas.
Unten ist meine annotierte htaccess-Datei.
RewriteEngine on
# If port is insecure...
RewriteCond %{SERVER_PORT} ^80$
# And requested URI is /https-test...
RewriteCond %{REQUEST_URI} ^(.*/)https-test$ [NC]
# Then point the server to the secure url:
RewriteRule . "https://www.example.com/https-test" [L,R]
# The next few lines try matching extensionless requests to .php files
# If the requested file is not a directory...
RewriteCond %{REQUEST_FILENAME} !-d
# And we CAN find a .php file matching that name...
RewriteCond %{REQUEST_FILENAME}\.php -f
# Then point us to that .php file and append the query string.
RewriteRule ^(.+)$ $1.php [L,QSA]
# These next few lines were added by the previous project owner
# They're supposed to redirect requests like /foo.html to /foo,
# But I suspect these might be the culprit
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)/$ /$1 [R=301,NE,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ /$1.html [NE,L]
# Next few lines are legacy SEO stuff, some pages were linked to as
# php but now are html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} .php$
RewriteRule ^(.*).php$ /$1.html [L,NE]
Also das ist der Code, den ich in meinem htaccess habe. Und wenn ich in Chrome zu http://www.example.com/https-test
gehe, bekomme ich www.mysite.com Sie zu oft umgeleitet.
Vielen Dank. Ihre Änderungen machen die Dinge sicherlich sauberer und verständlicher. Diese Regeln funktionieren hervorragend für die '.php' und' .html' Neuschreibungen. Leider bekomme ich immer noch eine Umleitungsschleife für 'https: // www.example.com/ https-test'. Ich verstehe es wirklich nicht. – wrydere
Ändern Sie 301, 302, um den Cache zu löschen, und sehen Sie, ob das hilft. Wenn es funktioniert, kannst du es wieder in 301 ändern. –
Habe meinen Cache gelöscht, habe verschiedene Browser ausprobiert, bekomme immer noch eine Schleife ... – wrydere