bolshi
Goto Top

Apache Redirect 301 auf bestimmte URL

Moin,
bei mir läuft ein Apache 2.4.29 auf einem Ubuntu Server. Eine meiner Websites soll beim Aufruf der Domain mit einer bestimmten URL starten. Hierzu hab ich einen Permanent Redirect eingerichtet

<VirtualHost *:80>
        RewriteEngine on

        ServerName domain.de


        Redirect 301 / https://domain.de/news/
...

Anleitungen von alten auf neue Domain gibt es im Netz zu Hauf. Bei mir soll jedoch "aktuelle-domain.de/" auf "aktuelle-domain.de/news" umleiten.

Hierbei dachte ich, dass "/" dem webroot entspricht.

Da mein Redirect aber nicht umleitet, ist das wohl falsch.


Wie leite ich um, sodass beim Aufruf der Domain eine bestimmte URL aufgerufen wird?

Content-ID: 1830121937

Url: https://administrator.de/contentid/1830121937

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

tagol01
tagol01 04.02.2022 um 10:32:26 Uhr
Goto Top
Hallo

        Redirect 301 / https://domain.de/news/

Stimmt der Syntax?
laut -> www.linux-praxis.de/verwaltung-eines-webservers sieht der Syntax folgendermassen aus:

Redirect /test http://www.anderer.neue-webseite.irgenwas/test

Was passiert bei dir?
bolshi
bolshi 04.02.2022 um 10:45:12 Uhr
Goto Top
Zitat von @tagol01:


laut -> [https://www.linux-praxis.de/verwaltung-eines-webservers https://www.linux-praxis.de/verwaltung-

Was passiert bei dir?

Hab grad mal den Redirect entsprechend dem Beispiel geändert. Wird nicht ausgeführt. Sprich, ich rufe "meine-domain.de" auf und die Seite "meine-domain.de" wird aufgerufen. Ich möchte aber auf "meine-domain.de/news" landen, wenn ich "meine-domain.de" aufrufe. Kann es sein, dass der Redirect nur von alte Domain auf neue Domain funktioniert?
colinardo
Lösung colinardo 04.02.2022 aktualisiert um 11:24:53 Uhr
Goto Top
Servus.
Die Redirect-Directive so genutzt führt verständlicherweise zu einem Umleitungs-Loop.
Nutze Rewrite Module
<IfModule mod_rewrite.c>
     RewriteEngine On
     RewriteRule ^/$ /news/ [L,R=301]
</IfModule>
oder die RedirectMatch Direktive
RedirectMatch 301 ^/$ /news/

Grüße Uwe
bolshi
bolshi 04.02.2022 um 12:17:48 Uhr
Goto Top
Hi.
Hab beide deiner Empfehlungen getestet, negativ. Sobald ich "meine-domain.de" aufrufe, öffnet der Browser "meine-domain.de".
Hab auch geschaut, ob rewrite läuft, ist aktiv.

Hier meine conf:

<VirtualHost *:80>
        RewriteEngine on
        ServerName meine-domain.de

        DocumentRoot /home/ip/d93/web

        RedirectMatch 301 ^/$ /news/

# tried, didn't work 
#       <IfModule mod_rewrite.c>
#               RewriteEngine On
#               RewriteRule ^/$ /news/ [L,R=301]
#       </IfModule>

        <Directory "/home/ip/d93/web">  
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        RewriteCond %{SERVER_NAME} =meine-domain.de
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

</VirtualHost>

Grüße Ingo
colinardo
Lösung colinardo 04.02.2022 aktualisiert um 12:46:42 Uhr
Goto Top
Klappt hier im Test einwandfrei!

RewriteCond %{SERVER_NAME} =meine-domain.de
Falsch ein = gibt es hier nicht und Conditions werden per Regex gematcht
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
Du willst auf den https vhost also musst du auch dort die endgültige Umleitung auf /news/ hinzufügen nicht im :80 vhost!

Du mischst hier alle Methoden auf einmal das geht natürlich in die Hose!

Des weiteren muss natürlich nach jeder Änderung ein Config-Reload oder apache2 restart durchgeführt werden (systemctl restart apache2) und der Browser-Cache sollte geleert werden denn vorherige Permanent redirects merkt sich der Browser in seinem Cache!

Also ohne https redirect entweder
<VirtualHost *:80>
        ServerName meine-domain.de
        DocumentRoot /home/ip/d93/web
        RedirectMatch 301 ^/$ /news/
        <Directory "/home/ip/d93/web">  
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
        </Directory>
</VirtualHost>
oder so
<VirtualHost *:80>
        ServerName meine-domain.de
        DocumentRoot /home/ip/d93/web
        <IfModule mod_rewrite.c>
                RewriteEngine On
                RewriteRule ^/$ /news/ [L,R=301]
        </IfModule>
        <Directory "/home/ip/d93/web">  
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
        </Directory>
</VirtualHost>
Und wie gesagt bei https redirect muss die /news/ Umleitung in den :443 vhost!

Mit https Redirect final kombiniert also so
<VirtualHost *:80>
        ServerName meine-domain.de
        DocumentRoot /home/ip/d93/web
        RedirectPermanent / https://meine-domain.de
</VirtualHost>
<VirtualHost *:443>
        ServerName meine-domain.de
        DocumentRoot /home/ip/d93/web
        RedirectMatch 301 ^/$ /news/

        SSLCertificateFile "/pfad/cert.pem"  
        SSLCertificateKeyFile "/pfad/certkey.pem"  
        <Directory "/home/ip/d93/web">  
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
        </Directory>
</VirtualHost>

Fazit: Works as designed face-wink.
bolshi
bolshi 04.02.2022 um 12:48:09 Uhr
Goto Top
Den Apachen starte ich nach jeder Änderung an den conf-Dateien neu. Auch nutze ich private Browser-Fenster. Ich mach den Kram nebenbei für meine Schule. Bin daher mit gesundem Halbwissen unterwegs. Ich suche im Netz nach Beispielen und passe die im worst case an. Ich Ich bin dankbar, wenn eine/r meine conf korrigiert postet. Ich wurschtel derweil mal weiter face-smile
colinardo
colinardo 04.02.2022 aktualisiert um 12:50:05 Uhr
Goto Top
S. die Ergänzungen oben die klappen zu 100%. Natürlich Zertfikate und sonst. SSL-Optionen an eigene Gegebenheiten anpassen.
bolshi
bolshi 04.02.2022 um 13:46:00 Uhr
Goto Top
@colinardo Ich dank dir sehr! Der erste große Hinweis war Port 80 und 443. Das SSL-Zertifikat generiere ich per Certbot. Certbot legt für SSL aber eine separate conf-Datei an. Somit ist der Apache an all deine tollen Tipps vorbeigerauscht. Nachdem ein lichter Moment meine partiell geistige Umnachtung auflöste und das SSL conf file modifizierte, lief's auch der Umleitung face-smile

Grüße ip