.htaccess Umleitung
Jörg
- htaccess
Hallo,
wie mache ich eine .htaccess-Umleitung, dass alle:
Jörg
http auf https umgeleitet werden?
aus example.com/test -> example.com#test wird
GENAU so oder nach welchen Regeln? Wahrscheinlich brauchst Du für die Weiterleitung ein (PHP-)Skript, welches Du für File-Not-Found-Errors als zuständig deklarierst.
alle Subdomains www.example.com auf example.com umgeleitet werden?
Kommt drauf an, wie diese konfiguriert sind, aber im Kern wie oben. (Erster Link)
Soweit, so gut.
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Das deckt die Punkte 1 und 3 ab.
Anschließend dachte ich, Punkt 2 hiermit abzudecken, aber das klappt nicht:
rewriteCond %{HTTP_HOST} example.com
RewriteRule (.*)$ https://example.com#$1
Was amche ich da falsch?
Jörg
Anschließend dachte ich, Punkt 2 hiermit abzudecken, aber das klappt nicht:
rewriteCond %{HTTP_HOST} example.com RewriteRule (.*)$ https://example.com#$1
Was mache ich da falsch?
Du weißt nicht was Du tust. Das würde immer wieder neu umleiten. Mein Vorschlag war ein Skript.
Es folgt ein Beispiel:
Also in .htaccess:
ErrorDocument 404 /search.php
Damit wird die search.php immer gestartet, wenn die angeforderte Seite nicht als Dokument bzw. Ressource existiert und wird mit allen notwendigen Daten gefüttert.
Die kann dann z.B. so aussehen (ich hab das nicht getestet, es ist aber trivial genug um wahrscheinlich zu funktionieren):
<?php
# Array mit alten und neuen URIs:
$Forwards['/test'] = '/index.php#test';
$Forwards['/foo.html'] = '/index.php#foo';
$Forwards['/bar.html'] = '/zur_bar.html';
# Run!
if ( isset( $Forwards[$_SERVER['REQUEST_URI']] ) ) {
http_response_code( 301 );
header( 'Location: ' . $Forwards[$_SERVER['REQUEST_URI']] );
exit;
}
http_response_code( 404 );
?>
<!DOCTYPE html>
<html lang="de">
<body>
<h1>Error 404</h1>
<hr>
<p>Oops. Die angeforderte Seite wurde nicht gefunden.</p>
</body>
</html>
Die Suche und die Antwort lassen sich auf (Beispiel → ) mannigfaltige und (Theorie → ) phantastische Weise erweitern...
Hallo Jörg,
Es folgt ein Beispiel:
Also in .htaccess:
ErrorDocument 404 /search.php
Damit wird die search.php immer gestartet, wenn die angeforderte Seite nicht als Dokument bzw. Ressource existiert und wird mit allen notwendigen Daten gefüttert.
Die kann dann z.B. so aussehen (ich hab das nicht getestet, es ist aber trivial genug um wahrscheinlich zu funktionieren):
<?php # Array mit alten und neuen URIs: $Forwards['/test'] = '/index.php#test'; $Forwards['/foo.html'] = '/index.php#foo'; $Forwards['/bar.html'] = '/zur_bar.html'; # Run! if ( isset( $Forwards[$_SERVER['REQUEST_URI']] ) ) { http_response_code( 301 ); header( 'Location: ' . $Forwards[$_SERVER['REQUEST_URI']] ); exit; } http_response_code( 404 ); ?> <!DOCTYPE html> <html lang="de"> <body> <h1>Error 404</h1> <hr> <p>Oops. Die angeforderte Seite wurde nicht gefunden.</p> </body> </html>
Danke, das funktioniert sehr gut und ist sehr variabel.
Ich habe Dein Beispiel noch etwas ausgeweitet und bin sehr zufrieden damit.
Jörg