2012-12-03 49 views
1

我有這個的.htaccess代碼:抓住每個正斜槓與的.htaccess參數

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^([\w-]+)/*$ ./index.php?page=$1 

這使得一個斜槓之後附加一個paramater並作爲一個PHP $_GET像這樣:

網址:

http://www.url.com/home 

PHP:

<?php 
    echo $_GET['home']; 
?> 

我的問題是,我該如何抓住每個正斜槓,並通過該值作爲PHP使用新$_GET?我假設問題是要使用正則表達式的解決方案,但由於我不知道正則表達式,我無法弄清楚。

只是爲了舉例澄清,我想這一點:

http://www.url.com/param1/param2/param3 

翻譯成:

$_GET['param1']; 
$_GET['param2']; 
$_GET['param3']; 

等等等等

+1

將它作爲一個簡單的單字符串,然後'爆炸()在PHP'它。這樣做會比試圖創建一個可以處理任意數量參數的mod_rewrite更加容易。 –

+0

感謝您的建議。如果我想要一些可以改變的參數,它會有幫助嗎?例如:'HTTP:// www.url.com /分類名/後alias',當然其轉換爲類別名稱和後ID或別名。 – George88

回答

2

不要做重寫模塊內。

而是做一個簡單的重寫你的腳本,並在那裏訪問原始reqeust($ _ SERVER [「HTTP_REQUEST_URI」])。您可以獲取請求中指定的路徑,您可以使用explode()函數以斜線分隔這些路徑。

3

這裏有一個想法:

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9-=_.]+)/([a-zA-Z0-9-=_.]+)/([a-zA-Z0-9-=_.]+)/?$ http://www.example.com/index.php?par1=$1&par2=$2&par3=$3 [L] 

不能使用(*),因爲INC盧斯的斜線。

+0

在那裏丟失了第三個''''。 –

+0

我明白這樣的問題,可能會出現任意數量的斜線。 – arkascha

+0

And ...爲什麼要查找字符串'param ...'? – arkascha