Ankündigung

Einklappen
Keine Ankündigung bisher.

Schöne URLs mit mod_rewrite

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Schöne URLs mit mod_rewrite

    Hallo Leute,

    Ich möchte aus verschiedenen Gründen meine URLs kürzen:
    www.22drei.de/eins.php -> www.22drei.de/eins

    Das habe ich auch soweit hingekriegt mit dieser .htaccess:
    Code:
    RewriteRule ^([a-z]*)$.php $1
    Funktioniert auch wie gesagt, könnt euch reinklicken unter www.22drei.de

    Jetzt würde ich gerne noch die Leute die direkt die .php Datei aufrufen umleiten auf den simulierten Ordner. Das heißt jemand gibt www.22drei.de/eins.php ein und landet automatisch auf www.22drei.de/eins.

    Mit der index.php habe ich das hinbekommen:
    Code:
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ 
    RewriteRule ^index\.php$ http://%{HTTP_HOST}/ [R=301,L,NC]
    Die anderen wollte ich mit diesem Code umleiten:
    Code:
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.php\ HTTP/ 
    RewriteRule ^(.*)$\.php$ http://%{HTTP_HOST}/$1 [R=301,L,NC]
    Das funktioniert leider nicht, kann mir jemand helfen?

    Gruß sliver2203


  • #2
    Zitat von sliver2203 Beitrag anzeigen
    Code:
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.php\ HTTP/ 
    RewriteRule ^(.*)$\.php$ http://%{HTTP_HOST}/$1 [R=301,L,NC]
    Du weißt, was das $ bedeutet, oder?
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Klar!

      Fehler gefunden und entfernt, keine Ahnung warum das da reingerutscht ist

      Zur Vollständigkeit der berichtigte Code:
      Code:
      RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.php\ HTTP/ 
      RewriteRule ^(.*)\.php$ http://%{HTTP_HOST}/$1 [R=301,L,NC]
      Danke tkausl für den Hinweis!

      Kommentar


      • #4
        Jetzt ist ein neues Problem aufgetaucht, wo ich gerade keinen Rat weiß.
        Wenn ich jetzt www.22drei.de/index.php aufrufe leitet mod_rewrite auf www.22drei.de/index um und nicht wie gewünscht auf www.22drei.de

        Kann jemand helfen?

        Code:
        #Umleitungen aktivieren
        RewriteEngine on
        
        #Duplicate Content verhindern, alle ohne www auf mit www umleiten
        RewriteCond %{HTTP_HOST} ^22drei.de 
        RewriteRule ^(.*)$ http://www.22drei.de/$1 [R=301,L]
        
        #Alle .php Endungen auf den simulierten Ordner leiten
        RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.php\ HTTP/ 
        RewriteRule ^(.*)\.php$ http://%{HTTP_HOST}/$1 [R=301,L,NC]
        
        #index.php auf root umleiten
        RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ 
        RewriteRule ^index\.php$ http://%{HTTP_HOST}/ [R=301,L,NC]
        
        #.php Endungen können weggelassen werden
        RewriteRule ^([a-z]*)$.php $1
        Gruß

        Kommentar


        • #5
          Du wirst niemals beim index-rule ankommen weil eins davor schon gematcht wurde.
          Zitat von nikosch
          Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

          Kommentar


          • #6
            Das heißt? Kann ich das anders lösen?

            Kommentar


            • #7
              Ich möchte aus verschiedenen Gründen meine URLs kürzen:
              www.22drei.de/eins.php -> www.22drei.de/eins

              Das habe ich auch soweit hingekriegt mit dieser .htaccess:
              Wenn ich jetzt www.22drei.de/index.php aufrufe leitet mod_rewrite auf www.22drei.de/index um und nicht wie gewünscht auf www.22drei.de
              Es ist totaler Bullshit, mod_rewrite so herum zu betreiben.
              --

              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar


              • #8
                Leite lieber einfach alle nicht existierenden URLs (grob gesagt: alles außer statischen Ressourcen wie Grafiken, CSS, …) an eine zentrale Index-Seite weiter und binde dort gegebenenfalls den passenden Content ein (den kannst du dann dort über den Inhalt von $_SERVER['REQUEST_URI'] ermitteln) oder erzeuge eine 404-Fehlermeldung, wenn kein Content existiert.

                Das ist gemeinhin der bessere Weg, als zig unterschiedliche Skriptdateien als Einsprungspunkte in die Anwendung zu haben.

                Dazu kannst du etwa die Server-Konfiguration von Silex nutzen:

                Code:
                Options -MultiViews
                
                RewriteEngine On
                #RewriteBase /path/to/app
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteRule ^ index.php [QSA,L]
                - http://silex.sensiolabs.org/doc/web_servers.html

                Es ist sicher auch keine schlechte Idee, dir das Micro-Framework insgesamt mal anzusehen, weil es – vergleichsweise – nachvollziehbare Lösungen für grundlegende Aufgaben enthält (primär hier eben für Routing, was die Zuordnung von URLs zu auszuführendem Programmcode ist).

                Kommentar

                Lädt...
                X