• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

.htaccess ignoriert?!

T4k3C4r3

Mitglied
Guten Tag,

Ich habe eine .htacces erstellt und diese in mein Root-Verzeichniss geladen.

Folgender Inhalt :
Code:
RewriteEngine  on
RewriteRule ^(.*)$  $1.php [QSA]

Dieser Code sollte doch die .php Endungen in der Url entfernen. Aber wenn ich zb meineseite.com/login anstatt meineseite.com/login.php eintippe,

dann erscheint ein 404 Error.

Daher ist mein Gedanke das die einfach Ignoriert wird ?!

Wie kann ich das Problem am Besten Lösen?

Danke schonmal.

Mfg

T4k3C4r3
 
Werbung:
Moin,
ein 404 wundert mich, weil du eine endlose weiterleitung machst. Apache wird wohl ein paar mal versuchen nach login.php, dann login.php.php, dann login.php.php.php weiterleiten und irgendwann den 404 raushauen.
Du solltest vorher prüfen ob die datei, die aufgerufen wird auch existiert.

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [QSA]

so leitet er an login.php weiter und weil es die datei gibt, wird diese auch angezeigt.

MfG
 
.htaccess verwunder mich generell. Der obengenannte Code funktioniert leider auch nicht. genau das selbe wie vorhin.

Kommt mir so vor als die ignoriert wird.

Mfg
 
Werbung:
Hallo,

glaube das was falsch rum läuft.
das passiert wenn nicht so genau wie möglich versucht wird zu erklaren was ist und was soll oder?

was möchtest du?
das aus url www.exemple.com/hans.php wir im browser www.exemple.com/hans ?
oder was meinst damit genau
dieser Code sollte doch die .php Endungen in der Url entfernen
wenn es das so ist, ist der code oben einfach falsch rum, der macht genau das anders rum aus hans wird hans.php

Cheffchen
 
oh ok. Ich kenn mich nicht so gut mit htaccess auch, des halb auch die Frage.

Ja genau das will ich was Du anhand des hans beispiel geziegt hast.

Mfg
 
Werbung:
Wenn Du im Browser www.example.com/hans.php eingeben willst:

Code:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [QSA]

Wenn Du im Browser www.exemple.com/hans eingeben willst:

Code:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*).php$ $1 [QSA]

Letzteres macht imho keinen Sinn.
 
Wenn Du im Browser www.example.com/hans.php eingeben willst:

Code:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [QSA]
Wenn er mit der htaccess www.example.com/hans.php in den Browser tippt, versucht der Apache auch die hans.php aufzurufen, wenn er diese nicht findet, weil nicht vorhanden, versucht er hans.php.php aufzurufen.
Das stimmt also auch nicht. Wenn er dort in dem Browser allerdings http://www.example.com/hans eintippt, sucht der apache nach einer hans.php und zeigt diese auch an. Das ist genau das, was ich oben schon geschrieben habe.

Wenn Du im Browser www.exemple.com/hans eingeben willst:

Code:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*).php$ $1 [QSA]

Letzteres macht imho keinen Sinn.
Letzteres verursacht mit Sicherheit einen 404, es sei denn das seine PHP Dateien keine Endungen haben, das glaub ich aber nicht.

Kurz zu Erklärung der htaccess:
RewriteBase / <-- heißt, folgende Regeln gelten für alles ab document root, also alles was nach example.com/ kommt.

RewriteCond %{REQUEST_FILENAME} !-f <-- heißt, prüfe ob der Aufruf keine existierende Datei aufrufen will.

RewriteCond %{REQUEST_FILENAME} !-d <-- heißt, prüfe ob der Aufruf kein existierendes Verzeichnis aufrufen will.

RewriteRule ^(.*)$ $1.php [QSA] <-- heißt, hänge an alles in der URL ein .php und rufe die Datei auf. [QSA] heißt QueryStringAppend, also das er den Querystring an den aufruf weiterleiten soll (?var=wert&var2=wert2 u.s.w.)

RewriteRule ^(.*).php$ $1 [QSA] <-- heißt, wenn in der url ein .php vorkommt, rufe die Datei ohne die Endung auf. Ergo, aus hans.php wird nur noch hans

MfG
 
Wird einfach ignoriert.. die 2. Methode. Was kann ich noch alles machen ? Ich bin verzweifelt.

Es erscheint nichtmal ne fehlermeldung.

Was ist mit imho gemeint ?
Grüße
 
Werbung:
Moin,
imho heißt "In My Humble Opinion", also "Meiner bescheidenen Meinung nach".

Probier mal folgendes um zu testen ob ModRewrite bei dir überhaupt funktioniert.
Erstelle eine leere .htaccess mit folgendem inhalt:
Code:
RewriteEngine On
 RewriteRule ^ www.google.com [R,L]
Danach ruf deine Seite auf example.com/irgendwasdasesnichtgibt.
Wenn du nun auf google.com weitergeleitet wirst, funktioniert ModRewrite bei dir und wir können weiterschauen. Wenn nicht, musst du bei deinem Provider nachfragen, ob und wie man das aktivieren kann.

MfG
 
Werbung:
Moin,
imho heißt "In My Humble Opinion", also "Meiner bescheidenen Meinung nach".

Probier mal folgendes um zu testen ob ModRewrite bei dir überhaupt funktioniert.
Erstelle eine leere .htaccess mit folgendem inhalt:
Code:
RewriteEngine On
 RewriteRule ^ www.google.com [R,L]
Danach ruf deine Seite auf example.com/irgendwasdasesnichtgibt.
Wenn du nun auf google.com weitergeleitet wirst, funktioniert ModRewrite bei dir und wir können weiterschauen. Wenn nicht, musst du bei deinem Provider nachfragen, ob und wie man das aktivieren kann.

MfG
Funktioniert leider nicht. Hab schon beim Support nachgefrag und sie dagen es ist aktiviert. .... :(
 
Peinlich, Peinlich, Peinlich!!! Ich hab den Fehler gefunden. Er liegt meinerseits. Entschuldigung! Ich habe die Datei nur "htaccess" gennant anstatt ".htaccess"

Doch jetzt ist wieder etwas komisches meine datei sieht so aus:

RewriteEngine onRewriteBase /RewriteRule ^(.*).php$ $1 [QSA]

Doch wenn ich jetzt meineseite.de/login aufrufe, dann kommt ein 404 und wenn ich meineseite.de/login.php aufrufe komm auch ein 404 Error.

Wenn ich jedoch die .htaccess entferne, dann funktioniert alles mit meineseite.de/login.php

Danke schonmal Mfg
 
Werbung:
Logisch, denn diese mod_rewrite-Regel leitet von login.php auf login weiter. Wie oben schon gesagt macht das keinen Sinn. Du verwechselst glaube ich die Richtung der Weiterleitung. Oder legst Du tatsächlich Dateien an die login heißen und nicht login.php?
 
Ich bin jetzt verwirrt
Mein ziel

Ohne .htaccess: seite.de/login.php
Mit .htaccess sollte es so sein seite.de/login

Wie muss ich das machen ?
 
Werbung:
Ok es funktioniert jetzt (Kommt kein 404), aber wenn ich

seite.de/login.php schreibe dann wird es nicht auf
seite.de/login weitergeleitet sondern bleibt einfach.

Kann ich da irgent wie ne fehlermelung machen oder etwas anderes damit man nicht seite.de/login.php aufrufen kann sondern nur seite.de/login?

Grüße
 
Was jetzt? Du willst doch /login aufrufen, nicht /login.php? Also musst Du auch alle Links auf /login setzen. Wenn Du verhindern willst, dass jemand /login.php direkt aufruft, dann kannst Du das nur in der PHP-Datei selbst (z.B. über Auslesen der $_SERVER-Angaben zur aufgerufenen URL).
 
Zurück
Oben