2014-09-25 30 views
1

在這一刻,我有一個情況,其中重寫了url,以便所有內容都按index.php進行,同時保持$_GET變量。 htaccess看起來如下:使用GET變量創建漂亮的url

RewriteEngine On 
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)?$ index.php?p=$1&projectid=$2&sub=$3&type=$4 
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)?$ index.php?p=$1&projectid=$2&sub=$3 
RewriteRule ^([^/\.]+)/([^/\.]+)?$ index.php?p=$1&projectid=$2 
RewriteRule ^([^/\.]+)/?$ index.php?p=$1 

這工作正常。但是,我希望它能夠以其他方式工作。如果有人前往http://www.example.com/index.php?p=page&projectid=123,他們將被重定向到http://www.example.com/page/123

這是可能的,如果是這樣,如何?到目前爲止,我所管理的只是創建一個重定向循環。

對於那些有興趣,重定向循環我創建看起來如下:

RewriteCond %{QUERY_STRING} ^p=([^&]+) 
RewriteRule ^/?index\.php$ http://www.example.com/%1? [L,R=301] 
+0

可能重複[參考:mod \ _rewrite,URL重寫和「漂亮鏈接」解釋](http://stackoverflow.com/questions/20563772/reference-mod-rewrite-url-rewriting-and-pretty-links -explained) – 2014-09-25 12:37:40

+1

考察現有的路由器解決方案(ZF,SF等)。 – fejese 2014-09-25 12:39:17

+0

@fejese:你能給我一個我可以讀到的鏈接嗎?我從來沒有聽說過。 – 2014-09-25 12:49:07

回答

1

我希望它的工作周圍的其他方法爲好。如果有人去http://www.example.com/index.php?p=page&projectid=123,他們將被重定向到http://www.example.com/page/123

是的,它的確是可能的,但你將需要使用THE_REQUEST變量爲。

RewriteCond %{THE_REQUEST} \s/+index\.php\?p=([^\s&]+)&projectid=([^\s&]+) [NC] 
RewriteRule^/%1/%2? [R=302,L] 

您也可以爲其他網址構建類似的規則。