什麼會做這樣的的.htaccess在任何長度
/mypage/ --> /index.php?page=mypage
/mypage/param1/value1/ -->index.php?page=mypage¶ms=param1/value1
東西隨着潛在無限數量的參數,有效的.htaccess規則?
謝謝。
什麼會做這樣的的.htaccess在任何長度
/mypage/ --> /index.php?page=mypage
/mypage/param1/value1/ -->index.php?page=mypage¶ms=param1/value1
東西隨着潛在無限數量的參數,有效的.htaccess規則?
謝謝。
最好是到/我的空間後/整個零件傳遞作爲參數去PHP腳本,並有將其解碼:
RewriteRule ^mypage/(.*) index.php?page=mypage¶ms=$1 [L,NC,QSA]
另外如果你想頁面是動態的:
RewriteRule ^([^/\.]+)/(.*) index.php?page=$1¶ms=$2 [L,NC,QSA]
或
RewriteRule ^([^/\.]+)(/(.*))? index.php?page=$1¶ms=$3 [L,QSA]
編輯
加了Cal的建議,謝謝Cal。
編輯
如果我正確理解你的評論:(如果沒有請解釋)。你可以只使用一個開關語句的默認動作是一樣的頁面變量索引操作:
switch($_GET['page']){
case 'mypage':
doMyPageStuff();
break;
case 'foo':
doFooStuff();
break;
case 'index':
default:
doIndexStuff();
break;
}
第二種方法是我需要更多的方法,但是如何忽略mypage之後的/? – 2009-01-27 20:16:20
RewriteRule ^([^/]+)/(.+)/?$ index.php?page=$1¶ms=$2
或非常相似 - 沒有拿到手頭的服務器來檢查!
我看到這已經有一個可以接受的答案,但我相信下面將只使用mod_rewrite來做你想做的事情。
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*/)([^/]+)/([^/]+) $1?$2=$3&%1 [L]
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^([^/]+)/ $1.php?%1 [L]
它的工作原理是因爲mod_rewrite以遞歸方式運行。也就是說,在每次重寫之後,新的URL將被再次處理。每次通過時,結尾的兩個值都變成查詢參數並添加到查詢字符串中。
這將改寫以下
/mypage/param1/val1/param2/val2/param3/val3/... --->
/mypage.php?param1=val1¶m2=val2¶m3=val3&...
當只有一個剩餘參數停止。它將採用第一個「參數」並用該名稱調用.php文件。 param/val對的數量沒有限制。
-
BMB
這裏是我的建議:
RewriteRule ^([^/]+)/(([^/]+/[^/]+(/[^/]+/[^/]+)*)/)?$ /index.php?page=$1¶ms=$3 [L]
這是不是很漂亮,但exaclty按照您的要求。它只允許以下形式的路徑:
/mypage/
/mypage/param1/value1/
/mypage/param1/value1/param2/value2/
/mypage/param1/value1/param2/value2/param3/value3/
/mypage/param1/value1/param2/value2/param3/value3/param4/value4/
…
那個女孩,你在你的臉書「主頁」上是霍特! – 2009-01-27 20:14:05