Jörg: .htaccess Umleitung

Hallo,

wie mache ich eine .htaccess-Umleitung, dass alle:

  1. http auf https umgeleitet werden?
  2. aus example.com/test -> example.com#test wird und
  3. alle Subdomains www.example.com auf example.com umgeleitet werden?

Jörg

  1. 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)

    1. 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

      1. 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...

        1. 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