2011-05-17 19 views
4

假設我的網站,如果該URL看起來像這樣mysite.com/index.php?myparam=test如何確保始終只使用乾淨的URL?

在.htaccess會做一些事情,我添加了以下行:

#RewriteRule ^([a-z]+)$ /index.php?myparam=$1 [L] 

偉大的工程! URL mysite.com/test將相應地重定向,一切正常

我想擺脫髒的URL,以便如果有人在手動鍵入mysite.com/index.php?myparam=test他將被重定向到mysite .com /測試,仍然工作,沒有進入無限循環..

+1

問題在哪裏??? – diEcho 2011-05-17 10:03:00

+1

我在這裏看到一個有效的問題。 – 2011-05-17 10:24:21

回答

0

確定後一些進一步閱讀的淨並感謝薩爾曼的答覆,我想通了,回答我的問題:)

下面的代碼將重寫髒的url來清除一個...

RewriteCond%{THE_REQUEST} ^。 \?myparam =([a-zA-Z] +)。

RewriteRule ^(。*)$ /%1? [R = 301,L]

請注意,'/%1'後面的問號非常重要,因爲將它放在那裏(在重定向目標上)將清除查詢字符串。

在這之後,下面的代碼將重定向乾淨URL到髒一個,而不改變URL(仍保持清潔)

重寫規則^([A-ZA-Z] +)$ /索引。 PHP?myparam = $ 1 [L]

這不會導致無限循環由於THE_REQUEST使用這隻會對你的要求,而不是服務器端重定向響應(我認爲)

你可能需要閱讀mod_rewrite語法指南以自定義它eds ..

0

如果你有「路由」的想法,你有機制將參數轉換爲URL並從輸入的URL獲取執行參數,如果有人進入手動執行參數,您將其重定向到您從路由機制獲得的URL。

關於symfony的1.4架構的路由機制的一些信息:

http://www.symfony-project.org/jobeet/1_4/Doctrine/en/05

我已經寫了我在幾個小時大學工程路由機制,因此有可能有一個。如果不是這樣,最流行[恕我直言]路由庫是部落:

http://dev.horde.org/routes/