php.de

Zurück   php.de > Webentwicklung > Server, Hosting und Workstations

Server, Hosting und Workstations Server-Konfigurationsdateien (.htaccess/httpd.conf) und Arbeiten auf Serverebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.07.2010, 15:13  
Neuer Benutzer
 
Registriert seit: 02.08.2009
Beiträge: 28
PHP-Kenntnisse:
Anfänger
karthago befindet sich auf einem aufstrebenden Ast
Standard mod_rewrite URL-Umleitung zu Dateien in Verzeichnissen, mit Slash nach Parameter

Hallo, ich mache gerade Bekanntschaft mit mod rewrite. Meine .htaccess sieht folgendermaßen aus:
Code:
Options +FollowSymlinks
RewriteEngine On
RewriteRule ^(.+)\.htm$ 			http://example.com/index.php [R=302,NC]
RewriteRule ^(.+)\.html				http://example.com/index.php [R=302,NC]
RewriteRule ^mystyle.css$			/css/mystyle.css$1 [L]
RewriteRule ^apply.php$				/index.php$1 [L]
RewriteRule ^login.php$				/index.php$1 [L]
RewriteRule ^messages.php$			/index.php$1 [L]
RewriteRule ^list.php$	   			/extensions/user/listusers.php?group=$1 [L]
RewriteRule ^user.php/id/(.*)$  	        /index.php?user_id=$1 [L]
RewriteRule ^(.*)/$ 			 	/index.php
ErrorDocument 404 				/index.php
Es geht um die Umleitung bei Dateien. Zum Beispiel die mystyle.css, die im head mit
Code:
<link href="mystyle.css" media="screen" rel="stylesheet" type="text/css" />
eingebunden wird und solange der Request auch nur einen Parameter und keinen Slash am Ende hat, klappt es auch, dass es die richtige Sheet einbindet.
Code:
http://www.example.com/foo     // klappt, Sheet wird eingebunden
http://www.example.com/foo/    // klappt nicht, Sheet wird nicht eingebunden

http://www.example.com/foo  -> view-source:http://www.example.com/mystyle.css   // ohne Slash am Ende und nur ein Parameter
http://www.example.com/foo/ -> view-source:http://www.example.com/foo/mystyle.css   // mit Slash am Ende
Würde mich freuen, wenn mich jemand aufklären könnte.
karthago ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 22.07.2010, 15:19  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von karthago Beitrag anzeigen
Würde mich freuen, wenn mich jemand aufklären könnte.
Gerne - wenn du uns bitte noch mitteilst, worüber du aufgeklärt werden möchtest ...?


Üblicherweise erspart man sich solche Probleme, in dem man externe Ressourcen einfach absolut zur Domain-Wurzel referenziert.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 22.07.2010, 15:45  
Neuer Benutzer
 
Registriert seit: 02.08.2009
Beiträge: 28
PHP-Kenntnisse:
Anfänger
karthago befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Gerne - wenn du uns bitte noch mitteilst, worüber du aufgeklärt werden möchtest ...?
Ok, ich werde versuchen, mein Anliegen ausführlicher zu beschreiben.
Code:
RewriteRule ^mystyle.css$	/css/mystyle.css$1 [L]
Hiermit wird Apache doch gesagt, dass die mystyle.css die mit <link href="mystyle.css" ..> eingebunden wird, eigentlich im Ordner /css/mystyle.css zu finden ist. Apache glaubt mir das zunächst auch . Solange die URL Example Web Page oder www.example.com/foo lautet. Aber sobald die URL einen Slash am Ende bekommt, also www.example.com/foo/, will Apache die Scheet nicht einbinden. Ziehe ich im Quelltext <link href="mystyle.css"...> in die URL-Leiste, so sehe ich, dass es /foo/ für ein Verzeichnis hält, also http://www.example.com/foo/mystyle.css. Aber das soll es ja nicht. Mit einem Slash vor dem Sheetnamen [ <link href="/mystyle.css"...> ] bindet es die Sheet auch bei example.com/foo/bar/bimbim korrekt im Root, also http://www.example.com/mystyle.css.

Wie müsste es richtig heißen, dem Apache zu sagen, dass ^mystyle.css$ nicht im Verzeichnis /foo/ ist, sondern immer im Root.

PS: sorry übrigens, dass ich mein Problem sprachlich leider nicht besser rüberbringen kann.

Geändert von karthago (22.07.2010 um 15:48 Uhr).
karthago ist offline   Mit Zitat antworten
Alt 22.07.2010, 16:08  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von karthago Beitrag anzeigen
Code:
RewriteRule ^mystyle.css$	/css/mystyle.css$1 [L]
Hiermit wird Apache doch gesagt, dass die mystyle.css die mit <link href="mystyle.css" ..> eingebunden wird, eigentlich im Ordner /css/mystyle.css zu finden ist.
Nein. Damit wird ihm gesagt, wenn eine Ressource mystyle.css angefordert wird, soll er /css/mystyle.css stattdessen ausliefern. (Ich nehme mal an, dass $1 ist da nur versehentlich ans Ende gerutscht - Sinn ergibt es an der Stelle nämlich keinen.)

Zitat:
Apache glaubt mir das zunächst auch .
Du glaubst, dass du ein Problem damit hättest, was der Apache dir glaubt - hast du aber nicht.
Du hast ein Problem mit dem Verständnis davon, wie der Client aus relativen Pfadangaben absolute zusammensetzt.

Zitat:
Solange die URL http://www.example.com oder www.example.com/foo lautet.
So lange macht der Client aus deinem Verweis auf "mystyles.css" eine Anfrage nach http://www.example.com/mystyles.css

Zitat:
Aber sobald die URL einen Slash am Ende bekommt, also www.example.com/foo/, will Apache die Scheet nicht einbinden. Ziehe ich im Quelltext <link href="mystyle.css"...> in die URL-Leiste, so sehe ich, dass es /foo/ für ein Verzeichnis hält, also http://www.example.com/foo/mystyle.css.
Natürlich - so funktioniert das Zusammensetzen relativer Pfadangaben zu einer absoluten Adresse durch den Client nun mal.

Zitat:
Mit einem Slash vor dem Sheetnamen [ <link href="/mystyle.css"...> ] bindet es die Sheet auch bei example.com/foo/bar/bimbim korrekt im Root, also http://www.example.com/mystyle.css.
Ja, ebenso logisch.

Zitat:
Wie müsste es richtig heißen, dem Apache zu sagen, dass ^mystyle.css$ nicht im Verzeichnis /foo/ ist, sondern immer im Root.
Wenn du bereits herausgefunden hast, dass der Zugriff auf http://www.example.com/mystyle.css immer klappt, wenn du in deinen Dokumenten die Adresse als "/mystyle.css" angibst - welches Problem hast du dann jetzt eigentlich noch ...?
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 22.07.2010, 16:15  
Neuer Benutzer
 
Registriert seit: 02.08.2009
Beiträge: 28
PHP-Kenntnisse:
Anfänger
karthago befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von ChrisB Beitrag anzeigen
welches Problem hast du dann jetzt eigentlich noch ...?
Gar keins nicht hauen. Ich bin nur etwas unsicher und habe mich gefragt, ob das seine Richtigkeit hat.

Nachtrag: ist es denn überhaupt möglich mit mod_rewrite zu sagen, dass es hier die absolute Domain-Wurzel (Zitat ChrisB) ist?
Code:
RewriteRule ^mystyle.css$	/css/mystyle.css$1 [L]
also so etwas:
Code:
RewriteRule ^/mystyle.css$	/css/mystyle.css$1 [L]

Geändert von karthago (22.07.2010 um 17:38 Uhr).
karthago ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Dateien zwischen Virtuellen Verzeichnissen kopieren Sensewell PHP Tipps 2010 1 21.06.2010 10:29
Auf FTP-Server Dateien von Verzeichnissen unterscheiden PHP Tipps 2005-2 4 26.07.2005 17:28
dateien in mehreren Verzeichnissen zählen?!?! PHP Tipps 2005-2 3 18.06.2005 08:54
[Erledigt] Dateien aus Verzeichnissen vom Webserver auslesen und linken PHP Tipps 2004 3 08.09.2004 10:07
Umleitung wenn Parameter direkt angesteuert wird PHP Tipps 2004 13 25.08.2004 16:20

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/server-hosting-und-workstations/69949-mod_rewrite-url-umleitung-zu-dateien-verzeichnissen-mit-slash-nach-parameter.html, mod_rewrite verzeichnis umleiten, mod_rewrite url umleiten, mod_rewrite umleitung, mod_rewrite alles nach slash, mod rewrite alles was nicht nach index.php geht umleiten, mod_rewrite ordner umleiten, rewriterule verzeichnis umleiten, mod_rewrite slash, mod_rewrite slash css, css weg nach slash, apache url umleitung, rewriterule slash am ende, url umleiten mod_rewrite, index.php umleiten rewrite, mod_rewrite slash parameter, mod_rewrite parameter, apache weiterleitung verzeichnis slash am ende, mod_rewrite url als parameter, mod_rewrite slash umleiten

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:57 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum