2013-07-05 66 views
0

我是新來的mod重寫和我試圖mod無法成功重寫此網址。mod_rewrite具有多個變量的URL

URL結構是這樣的:

http://mysite.com/script.php?id=15751890&xp=862297&wm=1721&ls=2725&he=63530&ks=23050&eath=53588&tk=10&ck=john&rk=37 

我想它MOD-改寫爲:

http://mysite.com/script.php?id=15751890 

或者:

http://mysite.com/15751890/862297/1721/2725/63530/23050/53588/10/john/37 

我跟着這個http://wettone.com/code/clean-urlshttp://net.tutsplus.com/tutorials/other/a-deeper-look-at-mod_rewrite-for-apache/

但就是無法做到這一點寫

什麼鍵入htaccess文件

+0

我假設你的意思是另一種方式 - 你想用查詢字符串重寫乾淨的URL到腳本?到目前爲止,你有什麼? –

+0

沒有查詢字符串(如果我理解你的話)我在URL中有GET變量,只想隱藏除了使用mod-rewrite之外的所有變量。他們告訴我,這是怎麼回事 –

回答

-1

請參閱我的回答這個問題:

php, handle unique URLs

這會給你這樣的:

http://mysite.com/15751890/862297/1721/2725/63530/23050/53588/10/john/37 
-1

而不是嘗試找出每一個可能的重寫組合,你應該學習MVC路由方法。

這樣,您就可以將的所有內容都轉發給PHP路由器,然後根據需要將請求發送給控制器等。

.htaccess的重寫一切:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule . index.php [L] 

在你的PHP腳本,你可以使用:$_SERVER['REQUEST_URI']獲得請求的URI。

示例:http://example.com/foo/bar/95將重寫爲index.php,然後$_SERVER['REQUEST_URI']將爲/foo/bar/95 - 然後您將相應地進行路由。

通常情況下,你的URL結構會是這樣:

http://example.com/controller/action/param_1/param_2/param_3/etc

而 「行動」 是一個控制器方法的另一個名稱。你如何編碼取決於你。

0

那麼,如果你真的想寫這樣的重寫,你應該能夠在你的htaccess文件中使用它。然而,有可能有更好的方法來處理這個URL,我給你你所要求的。

注意:我要離開您提供的網址。

RewriteEngine on 
RewriteRule (.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*) script.php?id=$1&xp=$2&wm=$3&ls=$4&he=$5&ks=$6&eath=$7&tk=$8&ck=$9&rk=$10&%{QUERY_STRING}$ [L] 

所以,你可以使用這種類型的URL與重寫。

http://mysite.com/15751890/862297/1721/2725/63530/23050/53588/10/john/37 
+0

這是什麼?不工作! –

+0

是的。你可以在這裏測試它。 http://htaccess.madewithlove.be/你從來沒有說過什麼不起作用,也沒有給出你所做的任何努力的例子。無論如何..祝你好運。 –