Sven: URL ohne Dateiendung eingeben

Hi Leute!

Ich verzweifle noch!! Habe schon paar Std. gegoogelt, aber NIX hilft!!

Es soll eine URL wie folgt eingegeben werden: muster.de/musterseite
Jetzt soll "musterseite" zu "musterseite.htm" umgeleitet werden...
Es soll nach dem Eingeben die Dateiendung NICHT weg oder so.
Wie würde das mit RewriteRule aussehen?

Dank euch schonmal!

Sven

  1. Lieber Sven,

    aber NIX hilft!!

    was hast Du denn schon probiert und was ist dabei passiert?

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. was hast Du denn schon probiert und was ist dabei passiert?

      http://beta.unclassified.de/code/html-css-js/url-rewriting/ !?
      http://www.spencerdrager.com/2010/02/07/hide-php-extension-in-url-using-htaccess/ !?
      Nur: Das wären halbe Sachen; es soll lediglich so eingegeben werden.

      1. Nur: Das wären halbe Sachen; es soll lediglich so eingegeben werden.

        Gunnar, ich hab grad gesehen, dass das auf deiner Site geht (sowohl URL als auch zumindest Links ohne Dateiendungen) und das sich vielleicht doch nich so schwierig gestaltet, also ich lass mich gern eines besseren belehren ...
        ;)

  2. @@Sven:

    nuqneH

    Hi Leute!

    Hi Wilfried!

    Es soll eine URL wie folgt eingegeben werden: muster.de/musterseite

    Oder doch nicht Wilfried?

    Es soll nach dem Eingeben die Dateiendung NICHT weg oder so.

    ?? Was soll das heißen? Bei der Eingabe von 'example.net/musterseite' soll dann nicht "http://example.net/musterseite" in der Adresszeile stehen, sondern "http://example.net/musterseite.html"? Warum?

    Andernfalls:

    Wie würde das mit RewriteRule aussehen?

    Gar nicht, sondern ~~~apache Options +MultiViews

    Qapla'
    
    -- 
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.  
    (Mark Twain)
    
    1. ?? Was soll das heißen? Bei der Eingabe von 'example.net/musterseite' soll dann nicht "http://example.net/musterseite" in der Adresszeile stehen, sondern "http://example.net/musterseite.html"? Warum?

      Weil: Wenn a, dann b: Dann sollten auch sämtliche Verweise (Bilder, Links, ...) usw., ob in HTM oder PHP, ohne Dateiendung sein (etwa wenn "Link-Adresse kopieren" genutzt wird) und das gestaltet sich schwierig.
      Soll nur für "außen" sein. ("Besuchen Sie uns im Netz unter")

      1. @@Sven:

        nuqneH

        Weil: Wenn a, dann b: Dann sollten auch sämtliche Verweise (Bilder, Links, ...) usw., ob in HTM oder PHP, ohne Dateiendung sein (etwa wenn "Link-Adresse kopieren" genutzt wird) und das gestaltet sich schwierig.
        Soll nur für "außen" sein. ("Besuchen Sie uns im Netz unter")

        Ich verstehe weder was du mir sagen willst noch was du gegen MultiViews hast.

        Qapla'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
        1. was du gegen MultiViews hast.

          RewriteEngine On  
          RewriteBase /  
          Options +MultiViews
          

          Gebe ich muster.de/musterseite ein, passiert noch immer nix, also es erfolgt noch immer keine Weiterleitung.

          1. Hi,

            [code lang=php]

            lang=php, hm. Wo genau steht dieser Code?

            Gebe ich muster.de/musterseite ein, passiert noch immer nix,

            Was passiert, wenn Du statt des zuvor genannten Codes die Zeile

            jifhginczg inbsf ggriur giu

            eingibst und Du die entsprechende URL aufrufst? Und was sagt Horst Gebessler aus Adelsdorf dazu, der für die Domain muster.de der technische Ansprechpartner ist?

            also es erfolgt noch immer keine Weiterleitung.

            Was willst Du eigentlich immer mit einer Weiterleitung? Nichts von dem, was Du bisher schriebst, bedingt oder begünstigt in irgend einer Form eine Weiterleitung.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. [code lang=php]

              lang=php, hm. Wo genau steht dieser Code?

              Gebe ich muster.de/musterseite ein, passiert noch immer nix,

              Was passiert, wenn Du statt des zuvor genannten Codes die Zeile

              jifhginczg inbsf ggriur giu

              eingibst und Du die entsprechende URL aufrufst? Und was sagt Horst Gebessler aus Adelsdorf dazu, der für die Domain muster.de der technische Ansprechpartner ist?

              Es dürfte klar sein, dass es nicht PHP, sondern Apache ist, und es dafür nur keine Codeformatierung gibt, bzw. ich natürlich nicht die echte Adresse muster.de/musterseite mein und es auf die echte Adresse nicht ankommt.

              Was willst Du eigentlich immer mit einer Weiterleitung? Nichts von dem, was Du bisher schriebst, bedingt oder begünstigt in irgend einer Form eine Weiterleitung.

              Ehm:
              Wird "muster.de/musterseite" eingegeben, obwohl es ja  die Datei "musterseite" (ohne Endung) nicht gibt (Browser geht davon aus und daher kommts natürlich zu ner Fehlermeldung), ist eine Weiterleitung zu "musterseite.htm" sinnvoll!?

              Bistn ganz schöner Klugscheißer.
              Hätte ja gar nicht mal was dagegen, doch deine Klugscheißerei hilft mir nicht noch nicht mal weiter.

              1. Hallo,

                [code lang=php]
                Es dürfte klar sein, dass es nicht PHP, sondern Apache ist, und es dafür nur keine Codeformatierung gibt

                selbstverständlich, [code lang=apache] existiert. Dann sieht das Syntax-Hilighting auch nicht mehr so merkwürdig aus.

                bzw. ich natürlich nicht die echte Adresse muster.de/musterseite mein

                Dann verwende sie nicht! Verwende für Beispiele entweder deine eigene, oder eine für Test- und Demonstrationszwecke vorgesehene Domain!

                Was willst Du eigentlich immer mit einer Weiterleitung? Nichts von dem, was Du bisher schriebst, bedingt oder begünstigt in irgend einer Form eine Weiterleitung.
                Ehm:
                Wird "muster.de/musterseite" eingegeben, obwohl es ja  die Datei "musterseite" (ohne Endung) nicht gibt (Browser geht davon aus und daher kommts natürlich zu ner Fehlermeldung), ist eine Weiterleitung zu "musterseite.htm" sinnvoll!?

                Nein. Sinnvoll ist zum Beispiel, MultiViews zu verwenden, so dass der Server automatisch die existierende Datei *mit* Dateiendung findet und ausliefert. Ohne Weiterleitung. Sinnvoll wäre eventuell auch, mod_rewrite zu verwenden, um den Request serverintern auf existierende Dateien abzubilden. Aber eine Weiterleitung halte ich für suboptimal.

                Bistn ganz schöner Klugscheißer.
                Hätte ja gar nicht mal was dagegen, doch deine Klugscheißerei hilft mir nicht noch nicht mal weiter.

                Das liegt wohl daran, dass du Hinweise nicht zur Kenntnis nimmst.

                Ciao,
                 Martin

                --
                Niemand ist überflüssig: Er kann immer noch als schlechtes Beispiel dienen.
                Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                1. selbstverständlich, [code lang=apache] existiert. Dann sieht das Syntax-Hilighting auch nicht mehr so merkwürdig aus.

                  OK, wieder was dazugelernt.
                  Ändert jedoch nichts dran, dass es nicht zur Auswahl steht.
                  ;)

                  Dann verwende sie nicht! Verwende für Beispiele entweder deine eigene, oder eine für Test- und Demonstrationszwecke vorgesehene Domain!

                  OK, auch hier wieder was dazugelernt ... 2606, is notiert.
                  Ändert hier jedoch nichts dran, dass es klar war, dass ich natürlich nicht die echte Adresse muster.de/musterseite mein. Und 2606 zu nehmen ist schließlich kein zwingendes Muss, sondern ein sich anbietendes (anbietendes!) Kann.
                  ;)

                  Sinnvoll ist zum Beispiel, MultiViews zu verwenden, so dass der Server automatisch die existierende Datei *mit* Dateiendung findet und ausliefert. Ohne Weiterleitung. Sinnvoll wäre eventuell auch, mod_rewrite zu verwenden, um den Request serverintern auf existierende Dateien abzubilden.

                  OK
                  Hieße?

                  Aber eine Weiterleitung halte ich für suboptimal.

                  Streiche Weiterleitung, setzte Umleitung ...
                  Zweck bleibt!

                  Das liegt wohl daran, dass du Hinweise nicht zur Kenntnis nimmst.

                  Wie du oben siehst, nehme ich ... diese Unterstellung widerlegend ... Hinweise durchaus (und gern) zur Kenntnis.

                  1. Hallo,

                    selbstverständlich, [code lang=apache] existiert. Dann sieht das Syntax-Hilighting auch nicht mehr so merkwürdig aus.
                    OK, wieder was dazugelernt.
                    Ändert jedoch nichts dran, dass es nicht zur Auswahl steht

                    aber sicher doch. Gleich als erstes - wegen "A" wie Apache.

                    Ändert hier jedoch nichts dran, dass es klar war, dass ich natürlich nicht die echte Adresse muster.de/musterseite mein. Und 2606 zu nehmen ist schließlich kein zwingendes Muss, sondern ein sich anbietendes (anbietendes!) Kann.

                    Ja, aber es ist ein absolutes "Don't", einfach x-beliebige Domainnamen zu benutzen, die sehr wahrscheinlich jemandem gehören, der über diesen Missbrauch sicher nicht erfreut ist.

                    Sinnvoll ist zum Beispiel, MultiViews zu verwenden, so dass der Server automatisch die existierende Datei *mit* Dateiendung findet und ausliefert. Ohne Weiterleitung. Sinnvoll wäre eventuell auch, mod_rewrite zu verwenden, um den Request serverintern auf existierende Dateien abzubilden.
                    OK
                    Hieße?

                    Hieße im einfachsten Fall genau das, was Gunnar dir schon empfohlen hat (und in seinem Posting hättest du auch schon die Verwendung von [code lang=apache] zur Auszeichnung von Apache-Code im Forum sehen können).

                    Aber eine Weiterleitung halte ich für suboptimal.
                    Streiche Weiterleitung, setzte Umleitung ...
                    Zweck bleibt!

                    Und der war damit doch längst erfüllt - auch ohne Weiterleitung oder Umleitung.

                    So long,
                     Martin

                    --
                    Wissen erwirbt man, indem man immer das Kleingedruckte sorgfältig liest.
                    Erfahrung bekommt man, indem man das nicht tut.
                    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                    1. aber sicher doch. Gleich als erstes - wegen "A" wie Apache.

                      OK!
                      Bringt jedenfalls keine Hervorhebung. :|

                      Ja, aber es ist ein absolutes "Don't", einfach x-beliebige Domainnamen zu benutzen, die sehr wahrscheinlich jemandem gehören, der über diesen Missbrauch sicher nicht erfreut ist.

                      OK, überzeugt!

                      Hieße im einfachsten Fall genau das, was Gunnar dir schon empfohlen hat

                      Hm

                      Und der war damit doch längst erfüllt

                      Hmm

                      1. Hallo,

                        aber sicher doch. Gleich als erstes - wegen "A" wie Apache.
                        OK!
                        Bringt jedenfalls keine Hervorhebung. :|

                        doch, schau dir Gunnars Posting an, das ich verlinkt habe. Apache-Direktiven und reservierte Wörter für deren Werte werden farblich hervorgehoben. "Normaler Text" natürlich nicht.

                        Hieße im einfachsten Fall genau das, was Gunnar dir schon empfohlen hat
                        Hm

                        Du schreibst "passiert noch immer nix". Das kann nicht sein. Irgendwas muss passieren.

                        Bekommst du einen 404-Fehler (Not Found)?
                        Dann sollte man den Fall näher untersuchen, das wäre außergewöhnlich.
                        Bekommst du einen 500-Fehler (Internal Server Error)?
                        Dann hast du möglicherweise nicht die Berechtigung, Options zu setzen.
                        Oder wird das erwartete Dokument ausgeliefert?
                        Dann funktioniert doch alles wie gewünscht.

                        Ciao,
                         Martin

                        --
                        The other line moves faster. (from Murphy's Law)
                        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                        1. Bekommst du einen 404-Fehler (Not Found)?
                          Dann sollte man den Fall näher untersuchen, das wäre außergewöhnlich.
                          Bekommst du einen 500-Fehler (Internal Server Error)?
                          Dann hast du möglicherweise nicht die Berechtigung, Options zu setzen.
                          Oder wird das erwartete Dokument ausgeliefert?
                          Dann funktioniert doch alles wie gewünscht.

                          Also meine .htaccess ist:

                          RewriteEngine On  
                          RewriteBase /  
                          Options +MultiViews
                          

                          Jetzt gebe ich "example.net/musterseite" (soll zu musterseite.htm führen) ein und es folgen "example.net/musterseite/" (am Ende der Schrägstrich) und der 404.
                          Darf vielleicht am Ende der Schrägstrich nicht sein?
                          Fehlt vielleicht ein AllowOverride?

                          Es soll alles letztlich wie auf Gunnars gelungener Site sein.

                          1. "example.net/musterseite/" (am Ende der Schrägstrich)
                            Darf vielleicht am Ende der Schrägstrich nicht sein?

                            KORREKTUR, mein Fehler:
                            Der Schrägstrich am Ende folgt NICHT, sondern nur der 404!!
                            Der Schrägstrich war, weil ich was eingegeben hatte, das gar nicht hochgeladen war.

                            1. "example.net/musterseite/" (am Ende der Schrägstrich)
                              Darf vielleicht am Ende der Schrägstrich nicht sein?
                              KORREKTUR, mein Fehler:
                              Der Schrägstrich am Ende folgt NICHT, sondern nur der 404!!
                              Der Schrägstrich war, weil ich was eingegeben hatte, das gar nicht hochgeladen war.

                              Bin schon viel schlauer ;) ...
                              Es geht teilweise hiermit:

                              RewriteCond %{REQUEST_FILENAME}\.htm -f  
                              RewriteRule ^(.*)$ $1.htm
                              

                              Nur: Gibts auf einer Ebene die Datei musterseite.htm UND den Ordner musterseite, wird versucht, den Ordner zu öffnen und das schlägt natürlich fehl. Wie erweitere ich die Anweisung dahingehend, dass auch wirklich auf die Datei zugegriffen wird?

                              1. URL-Rewriting Problem

                                Habs auch shcon mit Multiviews probiert, aber das scheint nicht zu funktionieren, einmal weils mehrere Unterverzeichnisse sind, einmal weils mehrere Dateitypen mit gehts (gehts.css, gehts.jpg, ...) gibt. Ist vielleicht nichtsdestrotrotz diese Lösung einfacher?

                  2. @@Sven:

                    nuqneH

                    Dann verwende sie nicht! Verwende für Beispiele entweder deine eigene, oder eine für Test- und Demonstrationszwecke vorgesehene Domain!
                    OK, auch hier wieder was dazugelernt ... 2606, is notiert.

                    Genau darauf hatte ich dich zuvor auch schon verwiesen. Musst auch noch dazulernen, wie man auf Links klickt?

                    Qapla'

                    --
                    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                    (Mark Twain)
  3. @@Sven:

    nuqneH

    Ich verzweifle noch!! Habe schon paar Std. gegoogelt, aber NIX hilft!!

    Lange googeln hilft NIX, richtig googeln hilft.

    Der Sucherfolg ist eine Funktion der Eingabewerte, nicht der Zeit.

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
  4. hi,

    Jetzt soll "musterseite" zu "musterseite.htm" umgeleitet werden...

    RewriteRule ^musterseite /musterseite.htm

    ^Pfad ggf. anpassen

    Es soll nach dem Eingeben die Dateiendung NICHT weg oder so.

    Die einzugebende URL http://example.com/musterseite hat keine Dateiendung. Oder so:

    RewriteRule ^musterseite /musterseite.htm [R]

    Dann wird nicht nur umgeschrieben sondern umgeleitet, musterseite wurde eingegeben, der Besucher wird zu musterseite.htm geschickt.

    Hotti

    1. RewriteRule ^musterseite /musterseite.htm

      ^Pfad ggf. anpassen

      OK, das hätt ich ja nu auch allein hingekriegt ...

      Es soll nicht explizit "musterseite" sein, sondern übergreifend das, was vor jedem .htm steht:

      muster.de/musterseite > muster.de/musterseite.htm
      muster.de/hallo > muster.de/hallo.htm
      muster.de/hallo/welt > muster.de/hallo/welt.htm
      ...

      1. Es soll nicht explizit "musterseite" sein, sondern übergreifend das, was vor jedem .htm steht:

        RewriteRule ^(.*)  /$1.htm

        Wahrscheinlich aber möchtest Du nicht "alles" umschreiben, sondern wenigstens die eingelinkten JS, CSS, GIFs und JPGs ausnehmen. Notiere vor der Regel eine RewriteCond, die das macht.

        Hotti

        1. RewriteRule ^(.*)  /$1.htm

          Danke soweit!

          Wahrscheinlich aber möchtest Du nicht "alles" umschreiben, sondern wenigstens die eingelinkten JS, CSS, GIFs und JPGs ausnehmen.

          Ja
          Könnt dann ja gleich in die RewriteRule "'übergreifend das, was vor jedem .htm steht' (außer .htm selbst)" nehmen ...
          Quasi: ^(.htm) ? (Kenne die Apache-Feinheiten nich so! :|)

          PS, @ Martin:
          "code lang=apache" bringt keine Hervorhebung, also es scheint dafür doch keine Codeformatierung zu geben!? ^^

          1. Hallo,

            Kenne die Apache-Feinheiten nich so!

            Was real existierende Resourcen angeht koennte dir IIRC folgendes weiterhelfen:
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d

            Grusz,
            Christopher

        2. RewriteRule ^(.*)  /$1.htm

          Endlosschleife

          foo.htm -> foo.htm.htm -> foo.htm.htm.htm ...