2010-03-12 287 views
0

我瘋狂使用.htaccess和重寫規則。 我想了解它是如何工作的,我討厭它,無論如何,這是我的問題。Htaccess重寫規則

(真的是你最簡單)

我的網站有一個主網頁index.php。 這是唯一的頁面,所有其他的都是由這個頁面處理的。

我做了一個簡單的RewriteRule

RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?page=$1 

做到這一點:

/index.php?page=VAL -> /VAL 

但我不知道如何創建這樣的規則:

/index.php?page=VAL&var1=VAL2&var2=VAL3 etc. 

我d像最終URL一樣:

/VAL/VAL2/VAL3 etc. 

感謝

回答

1

你可以只重寫請求您的index.php和解析與PHP請求的URI路徑:

$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); 
$segments = implode('/', ltrim($_SERVER['REQUEST_URI_PATH'], '/')); 

而規則是:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule !^index\.php$ index.php [L] 

這將重寫每個請求,即URI路徑無法映射到現有文件,到您的index.php

+0

好的,如果我理解的很好,RewriteCond會檢查uripath是不是一個文件,但是你能解釋一下RewriteRule的功能嗎?謝謝 – Marcx 2010-03-12 21:14:50

+0

@Marcx:'RewriteRule'將重寫任何請求,這是URI路徑(沒有路徑前綴)不是'index.php','index.php'。 – Gumbo 2010-03-12 21:16:46

+0

啊謝謝..所以'!'而不是'index.php'(路徑前綴)將被重寫爲'index.php'好吧非常感謝你.. – Marcx 2010-03-12 21:25:13