2009-12-28 62 views
0

我已經在我的.htaccess文件如何創建以下.htaccess文件

的URL「xyz.in/index.php?page=home」看起來像這樣在寫了下面的代碼瀏覽器的地址欄「xyz.in/page/home」

如果我想通過URL傳遞一個變量,那麼我將不得不寫作「xyz.in/page/home?value=1」或「xyz .in/page/home?value = 1 & value2 = 56 & flag = true「

url的起始部分(xyz.in/page/hom e)乾淨(搜索引擎友好),但如果我在URL中傳遞更多變量,那麼它看起來不太好。

我想使這個網址像 「xyz.in/page/home/value/4/value2/56」等。

變量值和值2不是靜態的,它們僅用於此處。名稱可以是任何東西。

可以做到這一點嗎?

請幫我形成「的.htaccess」文件

(涉及到在這個問題上使用的標題,語言或標籤的任何修改都歡迎)

感謝

+0

你錯了。該規則將'/ page/home'重寫爲'/index.php?page=home',而不是*反之。 – Gumbo 2009-12-28 10:41:18

+0

是的,你是對的..抱歉寫錯了。現在編輯它。 – 2009-12-28 10:55:09

回答

1

最簡單的將是解析PHP的URL路徑。然後,你就只需要這個規則的要求重寫你的PHP文件:

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

條件將確保只有不存在的文件的請求被重寫。

你的PHP腳本可能不是這個樣子:

$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); 
$segments = explode('/', ltrim($_SERVER['REQUEST_URI_PATH'])); 
for ($i=0, $n=count($segments); $i<$n; $i+=2) { 
    $_GET[rawurldecode($segments[$i])] = rawurldecode($segments[$i+1]); 
} 
+0

感謝您幫助Gumbo先生, 但是它如何使用呢?你能詳細說明你的答案嗎? – 2009-12-28 10:59:24

+0

@Gaurav Sharma:你可以像我寫的那樣使用代碼。然後應該將'/ page/home/value/4/value2/56'的請求解析爲'$ _GET = array('page'=>'home','value'=>'4','value2'= > '56' );'。 – Gumbo 2009-12-28 11:15:27

+0

您也可以使用parse_url($ _ SERVER ['REQUEST_URI'])['path']來獲取路徑而不使用正則表達式。 – Imran 2009-12-28 12:03:30