RewriteRule in .htaccess

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich habe ein kleines Problem.
    RewriteRule in .htaccess funktioniert nicht.

    Gewünscht ist ein Zugriff ohne .php Angabe.
    also http://www.site.de/admin für http://www.site.de/admin.php
    sonnst wird immer index.php aufgerufen.

    Ich habe folgendes .htaccess

    unter windows xampp funktioniert alles.
    Auf Raspi tut es nicht.

    Rewrite allgemein funktioniert.
    Aslo das tut und wird zu google umgeleitet.

    Apache Configuration
    RewriteEngine On
    RewriteRule ^ http://www.google.com [R,L]

    Woran kann es liegen dass admin=>admin.php nicht funktioniert?

    Vielen Dank

  • Vielen Dank,

    das habe ich auch bereits ausprobiert.
    es funktioniert nicht.

    Liegt es av. daran dass ich da mehrere Tests habe
    http://www.site.de/test1/admin.php
    http://www.site.de/test2/admin.php

    .htaccess liget entsprechend nur in http://www.site.de/test1/.htaccess bzw. http://www.site.de/test2/.htaccess

    es kommt immer die Fehlermeldung: 404 Not found
    The requested URL /test1/admin was not found on this server

    RewriteRule ^admin http://www.google.com [R,L]
    funktioniert auch nicht. Es wird also das Wort admin überhaupt nicht aufgelöst. RegularExpression greifen alos nicht??

    Hat jemand eine Idee?

  • sag doch das es in test1 liegt.

    Schmeiss mal das RewriteBase raus:
    The RewriteBase directive explicitly sets the base URL for per-directory rewrites. As you will see below, RewriteRule can be used in per-directory config files (.htaccess). In such a case, it will act locally, stripping the local directory prefix before processing, and applying rewrite rules only to the remainder. When processing is complete, the prefix is automatically added back to the path. The default setting is; RewriteBase physical-directory-path

    When a substitution occurs for a new URL, this module has to re-inject the URL into the server processing. To be able to do this it needs to know what the corresponding URL-prefix or URL-base is. By default this prefix is the corresponding filepath itself. However, for most websites, URLs are NOT directly related to physical filename paths, so this assumption will often be wrong! Therefore, you can use the RewriteBase directive to specify the correct URL-prefix.

    RewriteRule ^test1/admin admin.php [R,L]
    bzw.
    RewriteRule ^test1/admin$ admin.php [R,L]

  • ls /etc/apache2/mods-enabled/rewrite.load
    Die gibt es aber?

    In der Apache Config für den vhost ist aber auch erlaubt das Rewrite über die .htaccess benutzt werden kann? (Options / AllowOverride)

    Habe es gerade mal auf einem Server getestet.

    Code
    mkdir -p /var/www/test1
    echo "index.php" > /var/www/test1/index.php
    echo "admin.php" > /var/www/test1/admin.php

    Und meine Rewrite rules in der .htaccess

    Und das funktioniert.

  • ls /etc/apache2/mods-enabled/rewrite.load existiert

    Was meinst du mit "Apache Config für den vhost"?
    unter /etc/apache2/sites-available/ ist "AllowOverride All" gesetzt.

    Abgesehen von der ersten Zeile ist mein .htaccess gleich.

    Es müssen andere Einstellungen sein, die das Überschreiben verhindern.

  • Also nochmal:
    wenn ich das eingebe http://test.selfhost.com/admin kommt

    404 Not found
    The requested URL /admin was not found on this server.

    Im Logfile steht

    pass through /var/www/admin.php

    Da stimmt doch was nicht. Datei wird zwar gefunden, aber nicht angezeigt.

    unter /etc/apache2/sites-available/ssl steht
    LogLevel warn

    und unter /etc/apache2/apache2.conf



    Und das sind alle Logausgaben

    Code
    strip per-dir prefix: /var/www/admin.php -> admin.php
    applying pattern '.' to uri 'admin.php'
    RewriteCond: input='/var/www/admin.php' pattern='!-f' => not-matched
    pass through /var/www/admin.php

    von diesem .taccess

    Einmal editiert, zuletzt von wedi (20. September 2013 um 17:35)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!