PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   Apache HTTP-Server (http://www.selfphp.de/forum/forumdisplay.php?f=23)
-   -   URL-Rewriting Problem (http://www.selfphp.de/forum/showthread.php?t=24182)

sven-ni80 15.05.2011 17:01:34

URL-Rewriting Problem
 
Hallo Leute!

Habe folgenden Code:
Code:

RewriteCond %{REQUEST_FILENAME}\.htm -f
RewriteRule ^(.*)$ $1.htm

Problem: Gebe ich example.com/hey/leute/wie/gehts ein, will der Server statt auf die Datei gehts.htm aufs Verzeichnis gehts zugreifen ...
Habe auch schon alles Mögliche über
Code:

%{REQUEST_FILENAME} -d
, aber komme nicht weiter. :(
Bräuchte quasi die Anweisung "die DATEI" oder "Schrägstrich weg", oder?
Ist das Ganze vielleicht auch über REQUEST_URI möglich? Weil: Über REQUEST_FILENAME wird ja die htm-Datei wirklich in eine Datei ohne Endung umbenannt, oder? Und das soll ja nicht sein, es geht ja nur um die URL.

Danke euch schon mal.

Grüße
Sven

Ckaos 15.05.2011 17:14:00

AW: URL-Rewriting Problem
 
Hi

Zitat:

example.com/hey/leute/wie/gehts
Gibt es denn hey,leute,wie als Ordner?

Code:

RewriteCond %{REQUEST_URI} !^(.html) [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-F
RewriteRule ^(.*)$ $1.html [QSA]


mfg

CKaos

sven-ni80 15.05.2011 17:15:20

Nachtrag
 
Habs auch shcon mit Multiviews probiert, aber das scheint nicht zu funktionieren, einmal weils mehrere Unterverzeichnisse sind, einmal weils mehrere Dateitypen mit gehts (gehts.css, gehts.jpg, ...) gibt. Ist vielleicht nichtsdestrotrotz diese Lösung einfacher?

sven-ni80 15.05.2011 17:49:27

AW: URL-Rewriting Problem
 
Danke schon mal!
Probiers nachher mal aus.

Zitat:

Zitat von Ckaos (Beitrag 141094)
Gibt es denn hey,leute,wie als Ordner?

Jupp

sven-ni80 15.05.2011 18:59:28

AW: URL-Rewriting Problem
 
Es wird nach wie vor versucht, jeweils aufs gleichnamige Verzeichnis (leute, wie, ...) zuzugreifen (zumindest wird ein Schrägstrich hinzugefügt, leider ohne dass zuvor eine Anweisung "die DATEI" kommt), was zur 404 führt ...

Es soll eben jeweils auf die DATEI zugegriffen werden.

:|

Ckaos 15.05.2011 19:36:59

AW: URL-Rewriting Problem
 
Hi

Zitat:

Es wird nach wie vor versucht,
Dann fangen wir bei NULL an.
Wo gibst du das an?
Was machst du für Schritte nach bzw. vor dem einfügen?

mfg

CKaos

sven-ni80 15.05.2011 23:24:05

AW: URL-Rewriting Problem
 
Zitat:

Zitat von Ckaos (Beitrag 141105)
Dann fangen wir bei NULL an.
Wo gibst du das an?
Was machst du für Schritte nach bzw. vor dem einfügen?

Also ich hab das Root Verzeichnis mit:
Datei "hey.htm"
Datei "hallo.htm"
Verzeichnis "hey": darin Datei "leute.htm" und Verzeichnis "leute", im Verzeichnis "leute" Datei "wie.htm" und Verzeichnis "wie" sowie im Verzeichnis "wie" Datei "gehts.htm" und Ordner "gehts"
Verzeichnis "hallo"

Jetzt geb ich in die Browser-Adressleiste meinetwegen ein: "example.com/hey/leute"
Jetzt soll eben, statt der Ordner "leute" (mit Schrägstrich) (habe ja nicht "example.com/hey/leute/" eingegeben), die DATEI "leute.htm" (habe ja example.com/hey/leute" eingegeben) geöffnet werden!
Es wird also versucht, aufs gleichnamige Verzeichnis zuzugreifen, was zur 404 führt ...

Meine .htaccess ist diese:
Code:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME}\.htm -f
RewriteRule ^(.*)$ $1.htm


Ckaos 16.05.2011 00:30:27

AW: URL-Rewriting Problem
 
Hi

wichtig war für mich nun
Zitat:

.htaccess
hätte ja auch sein können das du in der apache conf rumdoktorst ;)

Code:

RewriteCond %{REQUEST_URI} !^([^\.]+)\.(.*)$ [NC]
Hier wird nach einem Schema gefragt und alles was nicht eine Endung besitzt
fällt hier rein. -> example.com/e oder example.com/a/b/c
Vorteil gegenüber !htm ist man muss nicht alle erlaubten aufzählen (.css,.js usw)
Code:

RewriteCond %{REQUEST_FILENAME} !-d
Alles was kein echter Ordner ist
Code:

RewriteCond %{REQUEST_FILENAME} !-F
Alles was keine echte Datei ist
Code:

RewriteRule ^(.*)$ $1.htm [L]
Alles was auf vorhergehendes zutrifft bekommt die Endung.

mfg

CKaos

sven-ni80 16.05.2011 16:21:21

AW: URL-Rewriting Problem
 
Mehnno!!

Es wird nach wie vor jedes Mal fälschlicherweise versucht, das Verzeichnis zu öffnen, d. h. ich geb example.com/hey/leute ein, es wird - obwohl ichs gar nicht eingegeben hab!?!? - der Schrägstrich hinten dran gefügt und eben versucht das (ja auch vorhandene) Verzeichnis zu öffnen.
Sieht so aus, als ob vorrangig geprüft wird "Ist 'leute' ein Verzeichnis?" und wenn ja, dann "ohne Rücksicht auf Verluste" versuchen zu öffnen ...
Ich werd noch wahnsinnig!! Möchte doch einfach nur "saubere" URLs haben!!

sven-ni80 16.05.2011 16:33:00

Nachtrag
 
Vielleicht hilft das weiter:
Geb ich example.com/hey/leute ein und gibt es NICHT noch mal das Verzeichnis leute, sondern NUR die Datei leute.htm, klappts!

PS: DirectorySlash Off dazu (zu je allen 3 Codevarianten) bringt auch nix (Internal Server Error)!
PPS: Habe jetzt noch das hier gefunden, doch das bringt mich irgendwie nicht weiter!


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:45:24 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.