2012-03-26 22 views
1

Ich wollte nur wissen, ob es möglich ist, mod_rewrite auf einem einzelnen (oder mehreren) Unterordner (n) zu verwenden. habe einen Dienst in einem Ordner, den ich gerne als Rest Service Syntax bezeichnen würde.modrewrite in Unterordner

$url = 'http://mysite/subfolder/parem1/parem2/parem3/'; 
$_SERVER['REQUEST_URI'] 

$tokens = explode('/', $url); 
echo $tokens[sizeof($tokens)-2]; 

so ist die Frage, ob ich all die verschiedenen Segmente in einem index.php im Unterordner fangen konnte, durch forexample modrewrite mit (durch eine .htaccess mit den Regeln nur in diesem Ordner ablegen?) Oder wie ist es erledigt ?

grüße

Antwort

1

Es ist möglich. In der .htaccess, könnten Sie etwas so:

<IfModule mod_rewrite.c> 
    Options +FollowSymlinks 
    RewriteEngine On 

    RewriteRule ^([^/\.]+)/?$        index.php?p1=$1 
    RewriteRule ^([^/\.]+)/([^/\.]+)/?$      index.php?p1=$1&p2=$2 
    RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$   index.php?p1=$1&p2=$2&p3=$3 
    RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ index.php?p1=$1&p2=$2&p3=$3&p4=$4 

</IfModule> 

in Ihrem Fall, dass Sie nur die .htaccess-Datei mit der index.php in den Ordner setzen könnte, wo Ihr Service befindet.

Auf diese Weise können Sie das Array $_GET abrufen (und bereinigen), anstatt die gesamte URL abzurufen.

+0

Ist nehmen möglich, auch „verstecken“ die index.php, wenn auf die URL zu schreiben oder die Verknüpfung .. wenn ich schreibe myfolder/param1/param2 es sagt, dass der Ordner nicht existiert .. vielleicht habe ich etwas falsch gemacht? – bomanden

+0

An dieser Stelle sollte index.php bereits von URL versteckt sein. Vielleicht hast du andere Regeln in einem anderen .htaccess im Hauptordner? – Simone

+0

Habe es funktioniert .. danke Mann! – bomanden

2

Wenn Sie Regeln für einen Unterordner definieren wollen Umschreiben es einen Blick auf RewriteBase

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase /yoursubfolder 
    RewriteRule ^(.*)$ index.php?$param=$1 
</IfModule>