你可以設置環境變量:
RewriteRule ^(bla|blo|bli|blu|bloi|bkdo|doid|boidi|woekj|dfpo8ds)/?$ /section_index.php?sectionurl=$1 [L,E=FOOBAR:$1]
值是現在%{ENV:FOOBAR}
訪問。
編輯另一種方式是處理步驟的要求和鏈條的規則:
# first path segment
RewriteRule ^(bla|blo|bli|blu|bloi|bkdo|doid|boidi|woekj|dfpo8ds)/?([^/].*)?$ $2?sectionurl=$1 [QSA,C]
# second path segment
RewriteRule ^(blog|foo)/?([^/].*)?$ $2?arg1=$1 [QSA,C]
# third path segment
RewriteRule ^(bar|baz)/?([^/].*)?$ $2?arg2=$1 [QSA,C]
# last rule
RewriteRule ^$ section_index.php [L,QSA]
但是當你使用PHP,你也可以使用PHP來解析請求的路徑,例如:
$_SERVER['REQUEST_URI_PATH'] = preg_replace('/\?.*/', '', $_SERVER['REQUEST_URI']);
$segments = explode('/', trim($_SERVER['REQUEST_URI_PATH'], '/'));
$argNames = array('sectionurl', 'arg1', 'arg2', 'arg3');
foreach ($segments as $i => $segment) {
if (isset($argNames[$i])) {
$_GET[$argNames[$i]] = $segment;
}
}
var_dump($_GET);
現在你只需要使用這個規則來發送每一個請求到PHP文件:
# exclude requests for existing files
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule^index.php [L]
究竟是什麼問題?給我們一個例子,說明你如何看待一個變量來解決你的問題。 – Gumbo 2009-05-04 07:13:14
問題是我在htaccess文件中多次使用該重寫代碼行。每次我必須再次寫出整個BL | blo | bl | blu | bkdo | doid | boidi | woekj | dfpo8ds。所以我想只是把它放在一個變量中,並開始執行此操作: RewriteRule ^(MVARIABLE)/?$ /section_index.php?sectionurl=$1 [L] – PeterV 2009-05-04 07:29:50