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)
mod_rewrite problem [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
mod_rewrite problem


 
King Lui*
01-04-2010, 01:01 
 
folgende situation:
Grundverzeichnis der .htaccess Datei ist http://localhost/screencultureCMS2/
ich möchte jetzt alles was daran noch angehängt wird als eine get variable an die url http://localhost/screencultureCMS2/index.php schicken dafür hatte ich mir folgende Regel geschrieben
RewriteRule ^/?(.*)$ index.php?url=$1 [L]

leider wird wenn ich $_GET in php ausgebe index.php angezeigt, aber wo kommt die her? nirgends in der url kommt der ausdruck vor.
Wenn ich in die Regel mehrere Unterverzeichnisse einbaue funktioniert es, ich möchte aber nunmal den kompletten angehängten string haben.

 
h3ll
01-04-2010, 01:03 
 
Warum willst du das unbedingt als GET-Parameter übergeben? Warum nicht direkt aus $_SERVER['REQUEST_URI'] auslesen?

 
AmicaNoctis
01-04-2010, 01:08 
 
*move* ins XAMP-Forum

Deine Umleitung wird mehrmals durchlaufen, bis die Maximalanzahl erreicht ist. Deine URL wird also beim ersten Durchlauf in index.php umgewandelt und dann wieder und wieder, wobei die URL dann natürlich schon index.php ist und dadurch steht auch nur das im GET-Parameter drin. Bau zusätzlich eine RewriteCond davor oder eine Ignorier-Regel:
RewriteRule !^index\.php$ - [C]

 
King Lui*
01-04-2010, 01:38 
 
Warum willst du das unbedingt als GET-Parameter übergeben? Warum nicht direkt aus $_SERVER['REQUEST_URI'] auslesen?
kann ich denn damit auch "unterverzeichnisse" auslesen? da müsste doch dann nen 404 kommen.
ich möchte für das cms was ich programmiere eine struktur basteln, mit der ich über die url angeben kann, welche module geladen werden sollen.
Module die in der Url als "Unterverzeichnis" angegeben sind werden in das darüberliegende hineingeladen.
Beispiel
http:/localhost/screencultureCMS/Main-a-b-c/News-d-e-f/
Die angehängten Buchstaben mit Bindestrichen stellen Variablen dar, die an die einzelnen Module übergeben werden.
Daher sollte es möglich sein mehr oder weniger beliebig viele Module zu laden.
Ich hoffe ich hab das halbwegs verständlich formuliert vllt bin ich ja auch voll auf dem Holzweg und ihr könnt mich eines besseren belehren.:danke:

 
h3ll
01-04-2010, 01:42 
 
URLhttp://example.org/Deutschland/Berlin
.htaccessRewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
index.php$nav = explode('/', trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/'));

print_r($nav);
// Array
// (
// [0] => Deutschland
// [1] => Berlin
// )

 
King Lui*
01-04-2010, 01:58 
 
boah vielen dank das funktioniert super, allerdings wird mir dort noch der order ausgegeben in dem sich die index.php befindet, diesen könnte ich mit php rausfiltern, da ich das system aber unabhängig vom verzeichnis programmieren will, würde ich dies gerne vorher irgendwie rausfiltern, ist das möglich?

 
h3ll
01-04-2010, 02:31 
 
boah vielen dank das funktioniert super, allerdings wird mir dort noch der order ausgegeben in dem sich die index.php befindet, diesen könnte ich mit php rausfiltern, da ich das system aber unabhängig vom verzeichnis programmieren will, würde ich dies gerne vorher irgendwie rausfiltern, ist das möglich?

Du kannst ja in einer Config-Datei festlegen, in welchem öffentlichen Pfad sich die Applikation befindet.

Oder du ermittelst ihn mittels dem Document Root:
$base_path = str_replace('\\', '/', dirname(__FILE__));
$base_url = '/' . str_replace($_SERVER['DOCUMENT_ROOT'], '', $base_path);
echo $base_url;

 
King Lui*
01-04-2010, 15:34 
 
Danke für den Code leider hat der bei mir nicht so recht funktioniert ich habe das jetzt so geschrieben

$filepath = str_replace($_SERVER['DOCUMENT_ROOT'], '', dirname(__FILE__));
$subpaths = str_replace($filepath.'/', '', $_SERVER['REQUEST_URI']);
$modules = explode('/', $subpaths);
echo '<pre>'; print_r($modules);echo '</pre>';

wofür hattest du denn in deinem vorherigen Beitrag das parse_url und den trim befehl genutzt? mir ist nich ganz ersichtlich wofür die in dem zusammenhang gebraucht werden.. Trotzdem erstmal vielen Dank das funktioniert jetzt genau so wie ichs mir vorgestellt habe.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:44 Uhr.