2012-02-03 91 views
4

我有以下網址htaccess的URL重寫.PHP

http://www.***.org/aaddress.php?state=nm&office_id=852&office_name=CLOVIS&state_name=New%20Mexico 

我想改變它下面的網址

http://www.*****.org/aaddress-state-nm-office_id-852-office_name-CLOVIS-state_New%20Mexico.php 

我用下面的htaccess代碼

Options +FollowSymLinks 
RewriteEngine on 

RewriteRule aaddress-state-(.*)-office_id-(.*)-office_name-(.*)-state_name-(.*)\.php aaddress.php?state=$1&office_id=$2&office_name=$3&state_name=$4 

這是不工作,當我點擊寫入地址沒有轉換爲.php頁面

我的頁面作爲第一個鏈接,鏈接裏想改變它作爲.php爲紐帶

+0

+1對於有趣的問題,我會盡力想出一個合適的答案。 – anubhava 2012-02-03 15:38:24

回答

0

試試這個:

RewriteRule ^aaddress-state-(.*)-office_id-(.*)-office_name-(.*)-state_name-(.*)\.php aaddress.php?state=$1&office_id=$2&office_name=$3&state_name=$4 [QSA,L] 
+0

感謝您的回覆,但它仍然不工作:( – Pipo 2012-02-03 08:54:59

1

使用此,

RewriteRule ^aaddress-state-([^-]+)-office_id-([^-]+)-office_name-([^-]+)-state_name-([^\.]+)\.php$ aaddress.php?state=$1&office_id=$2&office_name=$3&state_name=$4 

^$將匹配整個網址和[^-]+將匹配任何內容,除非遇到-。並且[^\.]+將匹配任何內容,除非遇到.

這將匹配aaddress-state-nm-office_id-852-office_name-CLOVIS-state_name-New Mexico.php 但是不是aaddress-state-nm-office_id-852-office_name-CLOVIS-state_New Mexico.php注意丟失name-部分state_New Mexico在後面的URL。

+0

感謝您的回覆,仍然有同樣的問題,網址顯示爲沒有任何變化 – Pipo 2012-02-03 09:03:19

+0

看到我的更新。您正在傳遞'state_',但匹配'state_name'。 – 2012-02-03 09:32:59

+0

再次感謝,我還沒有達到這個目標,但有些問題,但我還沒有發現它。 – Pipo 2012-02-03 15:01:05

0

這是一個基於遞歸的通用解決方案無論查詢字符串多長時間都可以工作。通過更換每個&=查詢字符串來連字符-/aaddress-state-nm-office_id-852-office_name-CLOVIS-state_name-New+Mexico

Options +FollowSymLinks -MultiViews 
RewriteEngine on 
RewriteBase/

RewriteRule ^aaddress\.php$ aaddress-%{QUERY_STRING} [L] 

RewriteRule ^([^&]+)&([^&]+)(&.*)?$ $1-$2$3 [L] 
RewriteRule ^([^&])& $1 [L] 

RewriteRule ^([^=]+)=([^=]+)(=.*)?$ $1-$2$3 [L] 
RewriteRule ^([^=])= $1 [L] 

這將在內部你的榜樣URL重定向到。

+0

謝謝,我會盡快嘗試 – Pipo 2012-02-03 18:13:26