2012-05-21 133 views
2

我在嘗試重新構建現有網站,同時將網址重新寫入更加用戶友好的格式。我現在已經是http://example.com/test_vars.php?test_var1=value1&test_var2=value2,理想的是什麼,我想是http://example.com/test_vars/test_var1/value1/test_var2/value2刪除PHP擴展並用.htaccess重寫查詢字符串

不可否認,我是新來修改htaccess中,但已經做了我的研究,並嘗試了幾件事情。最接近我來什麼我要找的(當然不是關閉),但我已經封閉的代碼如下:

Options +FollowSymLinks 
Options +Indexes 
RewriteEngine on 
DirectoryIndex index.html 

RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteCond %{REQUEST_URI} !/$ 
RewriteRule ^(([^/]+/)*[^.]+)$ /$1 [L] 

# if a directory or a file exists, use it directly 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
# otherwise forward it to index.html 
RewriteRule .* index.html 

有了這個,我最終的http://example.com/test_vars.php/test_var1/value1/test_var2/value2一個URL然而,沒有任何變量被傳遞給頁面。

回答

1

在您的test_vars.php中,您必須手動解析參數。 $_SERVER['REQUEST_URI']將包含/test_var1/value1/test_var2/value2。例如,編寫一個簡單的函數來解析字符串explode()

而且有你的網址沒有 「.php」 結尾,改變這一行

RewriteRule ^(([^/]+/)*[^.]+)$ /$1 [L] 

要這樣:

RewriteRule ^test_vars test_vars.php 

現在,你有你的漂亮網址:http://example.com/test_vars/test_var1/value1/test_var2/value2

+0

那倒看看我的變量,完美的,但是,我仍然在http://crapaudexhibition.com/test_vars.php/test_var1/value1/test_var2/value2上的.php擴展名 - 任何想法如何我可以擺脫它? – fergusonkw

+0

這很好,但是對於其他頁面是否有更通用的聲明(我只是將test_vars用作測試);我需要在多個頁面和可能的未來頁面上使用它。 – fergusonkw

+0

其實你應該將所有的請求重定向到更多的全局腳本'index.php'而不是一個腳本'test_vars.php'。在'index.php'中,你將從'$ _SERVER ['REQUEST_URI']'得到'/ test_vars/test_var1/value1/test_var2/value2'。解析字符串以獲取「test_vars」部分,並將字符串的其餘部分作爲key =>值對。然後你可以'include_once「test_vars.php」'。 – flowfree