Ankündigung

Einklappen
Keine Ankündigung bisher.

htaccess robots.txt rewrite

Einklappen

Neue Werbung 2019

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

  • htaccess robots.txt rewrite

    Hallo,
    ich versuche gerade die robots.txt mittels einem RewriteRule auf eine php datei zu verlinken.
    Da ich aber schon einen anderen RewriteRule in der .htaccess Datei habe, ignoriert er die zweite RewriteRule

    Code:
    <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)(\.gz)?$">
      Header set Expires "access plus 2 days"
    </FilesMatch>
    
    
    Options +FollowSymLinks
    RewriteEngine On
    
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]
    
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteCond %{SCRIPT_FILENAME} !-f
    
    
    RewriteRule ^([^/]*)/?([^/]*)/?([^/]*)/?(.*)$ ./index.php?language=$1&page=$2&action=$3 [L,QSA]
    RewriteRule ^robots\.txt$ robotshandler.php [L]
    Wenn ich nun die robots.txt Rewrite Rule vorziehe
    Code:
    RewriteRule ^robots\.txt$ robotshandler.php [L]
    RewriteRule ^([^/]*)/?([^/]*)/?([^/]*)/?(.*)$ ./index.php?language=$1&page=$2&action=$3 [L,QSA]
    bekomme ich einen 500 Internal Server Error.

    Hat jemand eine Idee?

    Lg,
    csskevin

  • #2
    Die robots.txt leitet man nicht weiter.
    Wozu hast du sie überhaupt?

    Kommentar


    • #3
      Hallo,

      ja, ich habe eine: Bei Deinem regulären Ausdruck, trifft immer die erste Rewrite Regel ein, deswegen kann niemals die zweite eintreffen. Du musst die Regel mit der robots.txt als aller erste Regel definieren, dann gehts.

      Und dein 500er Fehler ist ein PHP Fehler, hat aber selbst nichts mehr mit mod_rewrite zu tun (sonst würdest du nicht mal einen 500er Fehler bekommen). Was da genau passiert ist, kann ich Dir nicht sagen, ohne die index.php gesehen zu haben. Schaue doch mal in die error_log für deine Domain, die müsste schon Aufschluss darüber geben, was schief gelaufen ist.


      MFG

      derwunner

      Kommentar


      • #4
        Du enstellst auch den Sinn, wenn du die zwei Zeilen tauscht. Eine RewriteCond bezieht sich immer auf die nächste RewriteRule.

        Sinnvoll formatiert steht dort also:
        Code:
        RewriteCond %{SCRIPT_FILENAME} !-d
        RewriteCond %{SCRIPT_FILENAME} !-f
        RewriteRule ^([^/]*)/?([^/]*)/?([^/]*)/?(.*)$ ./index.php?language=$1&page=$2&action=$3 [L,QSA]
        
        RewriteRule ^robots\.txt$ robotshandler.php [L]
        Wenn du es tauschen willst, muss es so aussehen:

        Code:
        RewriteRule ^robots\.txt$ robotshandler.php [L]
        
        RewriteCond %{SCRIPT_FILENAME} !-d
        RewriteCond %{SCRIPT_FILENAME} !-f
        RewriteRule ^([^/]*)/?([^/]*)/?([^/]*)/?(.*)$ ./index.php?language=$1&page=$2&action=$3 [L,QSA]

        Kommentar


        • #5
          Vielen Dank
          das hat perfekt funktioniert

          Kommentar


          • #6
            Zitat von erc Beitrag anzeigen
            Wenn du es tauschen willst, muss es so aussehen:

            Code:
            RewriteRule ^robots\.txt$ robotshandler.php [L]
            
            RewriteCond %{SCRIPT_FILENAME} !-d
            RewriteCond %{SCRIPT_FILENAME} !-f
            RewriteRule ^([^/]*)/?([^/]*)/?([^/]*)/?(.*)$ ./index.php?language=$1&page=$2&action=$3 [L,QSA]
            Ja, das meinte ich doch, sorry

            Kommentar

            Lädt...
            X