Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
htaccess-Frage [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-consult PHP Entwicklung
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
htaccess-Frage


 
Mathis
22-01-2010, 14:09 
 
Hallo,

ich weiß, das gehört hier eigentlich nicht rein. Aber irendwie gibt es dafür keine Extra-Kategorie. Daher poste ich es mal hier.

Ich möchte Links à la css/irgendeinname.css in min/?f=css/irgendeinname.css umwandeln. Das versuche ich mit folgender Regel:
RewriteRule ^css\/([_a-zA-Z0-9]+).css$ min/?f=css/$1.css

Das Problem: Das Verzeichnis css/irgendeinedatei.css existiert auch in Wirklichkeit. Daher spuckt er mir immer die Originaldatei aus, anstatt den Link zu überschreiben. Wie kann ich das unterbinden?

Gruß und danke für jeden Tipp!
Mathis

 
AmicaNoctis
22-01-2010, 14:10 
 
ich weiß, das gehört hier eigentlich nicht rein. Aber irendwie gibt es dafür keine Extra-Kategorie.

Doch, die gibt es. *move*

Poste doch mal bitte die gesamte .htaccess. Vermutlich fehlt bei dir noch was, z. B. "RewriteEngine On" oder so.

Gruß,

Amica

 
Mathis
22-01-2010, 17:38 
 
RewriteEngine on

RewriteRule ^css\/([_a-zA-Z0-9]+).css$ min/?f=css/$1.css


Mehr steht bislang nicht drin. Was komischerweise funktioniert ist, wenn ich die Regel ändere:
RewriteRule ^css1\/([_a-zA-Z0-9]+).css$ min/?f=css/$1.css

und dann halt im Browser css1/irgendeincssfile.css aufrufe. Nur, wenn die aufgerufene Datei auch physikalisch auf dem Server liegt, dann gehts nicht. Dann nimmt er immer die Originaldatei. Irgendwie sehr merkwürdig!!

 
AmicaNoctis
22-01-2010, 18:21 
 
Warum sollte man eigentlich mod_rewrite benutzen, wenn die Datei doch existiert? Jedenfalls steht hier was dazu: Hidden features of mod_rewrite - Stack Overflow (http://stackoverflow.com/questions/286004/hidden-features-of-modrewrite)

 
Mathis
23-01-2010, 13:57 
 
Ich möchte modRewrite benutzen, weil ich halt nicht möchte, dass die Datei direkt aufgerufen wird. Sie soll über ein Script aufgerufen werden, das dann wiederum die Datei aufruft verarbeitet und komprimiert ausgibt.

Der gegebene Link verweist leider nur auf eine allgemeine modRewrite-Anleitung. Solche Anleitungen gibt es zuhauf im Netz, helfen mir leider aber bei meinem spezifischen Problem nicht weiter..

Hat noch jmd. eine Idee?

 
AmicaNoctis
23-01-2010, 14:00 
 
Vielleicht solltest du erstmal lesen und dann urteilen! Darin wird nämlich dein spezifisches Problem explizit behandelt und zwar sogar als erstes unter "Common use cases". Ich hab dir das ja nicht aus Langeweile ergooglet.

 
Mathis
23-01-2010, 14:20 
 
Ok, sorry... Da hab ich wirklich nicht gründlich genug gelesen. Das sah irgendwie sehr nach einer allgemeinen Anleitung aus.

Leider scheint das mein Problem doch nicht so ganz abzudenken. In meiner .htaccess steht jetzt:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^css\/([_a-zA-Z0-9]+).css$ min/?f=css/$1.css


Das hat leider noch gar nix gebracht. Kann ja auch irgendwie nicht, denn: RewriteCond "beschränkt" ja quasi die Ausführung der nachfolgenden RewriteRule auf ganz bestimmte Fälle (meinem Verständnis nach entspricht das ja in der Programmierung einem if ... then). Ich will die Ausführung aber nicht beschränken, sondern den Server dazu bringen, auch in dem Fall, dass die aufgerufene Datei physikalisch existiert die Regel anzuwenden und URL zu überschreiben.

 
Mathis
23-01-2010, 14:25 
 
Ok, ich glaub jetzt hab ichs... Das war ein Cache-Problem meines Browsers.. Da war wohl die alte Datei noch im Cache. So konnte es natürlich nicht gehen!! Dummer Fehler!!

 
AmicaNoctis
23-01-2010, 14:26 
 
Und wenn du den Backslash nach css entfernst und einen Slash vor min machst, auch nicht? Eigentlich ist das nämlich der Weg.

Edit: hab dein Zwischenposting übersehen.


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:40 Uhr.