PHP htaccess und mod_rewrite

Zhen

Lt. Junior Grade
Registriert
Aug. 2009
Beiträge
299
Hallo Leute,
bräuchte mal wieder eure Hilfe. Bin gerade an einem Webprojekt für mich dran und wollte die RewriteEngine dafür nutzen.

Also dass bei mir statt solchen Links wie "www.meinedomain.de/index.php?site=home" in der Adresszeile, sowas wie "www.meinedomain.de/home/" erscheint. Ich habe mich schon bissl eingelesen, aber komme noch nicht so ganz klar.

Ich hab folgenden Code:
PHP:
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    Options +FollowSymlinks
    RewriteRule ^\.htaccess$ - [F]
    
    RewriteRule ^(.*)\/$ index.php?page=$1
</IfModule>

Das funktioniert auch wenn der Benutzer in die Adresszeile folgendes eintippen würde: www.meinedomain.de/seite/
Aber ich hätte gern dass, er mich auch ohne den Slash am Ende zur richtigen Seite leitet. Das bekomme ich aber irgendwie grad überhaupt nicht hin.

Kann mir da jemand helfen bitte?
Ergänzung ()

Eine weitere Frage wäre noch, wie man mit htaccess-Datei den direkten Zugriff auf Dateien auf dem Server verhindern könnte?

Das VerzeichnisBrowsing kann man ja mit:
PHP:
Options -Indexes
deaktiveren. Damit werden dann die Dateien schon mal nicht eingeblendet wenn man einen Ordner ansurft.

Aber was wenn ich den direkten Zugriff auf Dateien verhindern will? z.B. soll beim Aufruf von "www.meinedomain.de/css/style.css" eine Fehlermeldung (z.B. Zugriff verweigert) eingeblendet werden, aber die index.php soll diese Datei über das link-Tag trotzdem verlinken können.
Genau das selbe mit Includes für PHP-Dateien.

www.meinedomain.de/classes/test.php => im Browser -> Zugriff soll verhindert werden
Include( "classes/test.php" ) => in der index.php z.B. -> Zugriff soll erlaubt sein.

Wie richtet man das ein? Egal wie viel ich suche ich finde einfach nicht das passende :( :(
 
den "direkten zugriff" auf die style.css kannst du mal vergessen, das file braucht der browser in plaintext und damit kann der betrachter auch darauf zugreifen. es sei denn du bastelst dir ein php script, dass die css selectors parsed und dir den style für jedes element einzeln übernimmt :D

zum rewriterule:

ersetze

Code:
RewriteRule ^(.*)\/$ index.php?page=$1

durch

Code:
RewriteRule ^(.*)$ index.php?page=$1

vielleicht funktioniert das.

deny access for specific files:

Code:
<Files "test.txt">
Order Allow,Deny
Deny from all
</Files>

das betrifft dann access über apache, der php-parser kann test.php dann trotzdem noch includen.
 
Bezüglich des Zugriffs danke schon mal.
Hab die php Dateien sperren können für den direkten Zugriff, aber hätte mir gewünscht dass es auch mit den Images, css sowie mit den js Dateien auch klappt. :-(

Deinen rewrite Code hab ich auch schon ausprobiert, aber dann macht er mir entweder ne endlos Weiterleitung oder er zeigt mir nicht den richtigen wert in der $_GET['page'] an. Da kommt dann als Wert Index.php statt dem aufgerufenen link.
 
Zurück
Oben