Ankündigung

Einklappen
Keine Ankündigung bisher.

if in .htaccess

Einklappen

Neue Werbung 2019

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

  • if in .htaccess

    Hallo zusammen,

    über meine .htaccess möchte ich diverse Besucher über deren IP-Adressen aussperren, die Aussperrung jedoch bei Bedarf einfach deaktivieren können. Dazu habe ich <if> wie folgt verwendet:

    Code:
    order allow,deny
    allow from all
    
    <If "true">
    deny from 111.111.111.111
    deny from 222.222.222.222
    </If>
    Leider werden die Ausschlüsse bei Verwendung der <If>-Tags ignoriert, bei Entfernung der beiden <If>-Zeilen dagegen funktionieren sie.

    Habe ich die Verwendung von <If> hier falsch verstanden?


  • #2
    Und was soll das heissen if true, so rein praktisch ?
    http://httpd.apache.org/docs/2.4/expr.html
    http://httpd.apache.org/docs/2.4/mod/core.html#if

    Kommentar


    • #3

      <If "true"> soll bewirken, dass die eingeschlossenen deny-Kommandos berücksichtigt werden, <If "false"> soll bewirken, dass sie nicht berücksichtigt werden. So wie es in der Dokumentation steht (expr ::= "true" | "false").
      Eigentlich, scheint aber fehlerhaft zu sein?

      Kommentar


      • #4
        Zitat von tomBuilder Beitrag anzeigen
        Und was soll das heissen if true, so rein praktisch ?
        Ich denke er will damit Mehrzeilige/Block-Kommentare "faken", weil htaccess das nicht kann.

        Angenommen in PHP gäbe es nur # und kein /**/ dann könntest/müsstest du sowas machen:
        PHP-Code:
        if (false) {

            
        // hier ganz viel Code


        Wenn man das false auf true ändert dann wird es ausgeführt, bei false nicht.


        Was im Gunde dann sowas ist:
        PHP-Code:
        /*

        hier ganz viel Code

        */ 
        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Genau, in htaccess kann man scheinbar nur einzelne Zeilen per # auskommentieren, deshalb dieser Umweg, der aber bisher auch nicht funktioniert.

          Kommentar


          • #6
            Zitat von dark_rider Beitrag anzeigen
            <If "true"> soll bewirken, dass die eingeschlossenen deny-Kommandos berücksichtigt werden, <If "false"> soll bewirken, dass sie nicht berücksichtigt werden. So wie es in der Dokumentation steht (expr ::= "true" | "false").
            Eigentlich, scheint aber fehlerhaft zu sein?
            mir schon klar, aber Du übergehst halt expr weswegen ich dir den ersten link gepostet habe !

            Kommentar


            • #7
              Das verstehe ich so rein theoretisch nun leider nicht. Hättest Du ein Beispiel?

              Kommentar


              • #8
                https://httpd.apache.org/docs/2.4/howto/access.html
                da steht das man deny allow nicht mehr verwenden sollte!

                Kommentar


                • #9
                  Interessante Randnotiz! Wie das <If> mit "true"/"false" hier nun genau funktionieren soll, weiß das vielleicht noch jemand?

                  Kommentar


                  • #10
                    Ja klar, das sind Grundlagen der Programmierung.

                    Das if-Konstrukt ist eines der wichtigsten Kontrollstrukturen vieler Programmiersprachen, denn es ermöglicht die bedingte Ausführung von Kodefragmenten.
                    Code:
                    if (ausdruck)
                        anweisung
                    Wird der Ausdruck zu einem booleschen Wahrheitswert(TRUE) ausgewertet ist die Bedingung erfüllt und die nachfolgende Anweisung (Code) wird ausgeführt. Bei einem FALSE ist die Bedingung nicht erfüllt und der nachfolgende Code wird ignoriert..


                    Warum machst du nicht was im Link steht
                    Code:
                     <RequireAll>
                          Require all granted
                          Require not ip 111.111.111.111
                          Require not ip 222.222.222.222
                    </RequireAll>
                    Die Erklärung dazu steht dort auch(eigentlich müssig das jetzt auch noch hier rein zu kopieren, daher lasse ich das sein).

                    Kommentar


                    • #11
                      Danke, das werde ich wegen der deprecation von deny/allow schon demnächst angehen. Trotzdem hätte ich das <If> unabhängig davon schon auch noch gern verstanden, d.h. warum der Block zwischen <If "true"> und </If> nicht ausgeführt wird.

                      Kommentar


                      • #12
                        Zitat von dark_rider Beitrag anzeigen
                        + Trotzdem hätte ich das <If> unabhängig davon schon auch noch gern verstanden, d.h. warum der Block zwischen <If "true"> und </If> nicht ausgeführt wird.
                        Ich nehme an Du hast Dir den Apache link inclusive des queerverweises auf BNF - falls Dir das nichts gesagt hat - gelesen ?
                        Dann hast Du dazu möglicherwesise eine konkreetere Frage ?

                        Kommentar


                        • #13
                          BNF sagt mir nichts. Meine Frage erneut:
                          <If "true"> ... </If>
                          Warum werden Kommandos zwischen den beiden If-Tags nicht ausgeführt?

                          Kommentar


                          • #14
                            Zitat von dark_rider Beitrag anzeigen
                            BNF sagt mir nichts.
                            (..)inclusive des queerverweises auf BNF - falls Dir das nichts gesagt hat - gelesen ?
                            Nein ? Dann tue es doch mal.

                            Kommentar


                            • #15
                              Den Artikel unter http://httpd.apache.org/docs/2.4/expr.html hatte ich schon gelesen (und nun erneut), die Bezeichnung (BNF) hatte sich nur noch nicht eingeprägt - allerdings kann ich daraus leider immer noch nicht erkennen, warum <If "true"> scheinbar nicht als erfüllte Bedingung gilt. Was wäre dagegen eine funktionierende, permanent erfüllte Bedingung?

                              PS: Die (deprecated) denies wurden durch Require ersetzt, das funktioniert.

                              Kommentar

                              Lädt...
                              X