2012-09-22 69 views
1

我實際的URL看起來是這樣的:重寫URL沒有ID,或通過ID改寫標題

http://mydomain.com/example.php?id=value1&name=value2 

理想的我會是這樣的:

http://mydomain.com/example/value2 

我不想顯示的項目ID。我搜索了幾個小時,但沒有發現任何有用的東西。 我想傳遞id但不想在URL中顯示它。是這樣的可能嗎? 我可能在客戶端加載頁面後以某種方式重寫URL嗎?

如果我必須發送身份證,那麼我怎麼能重寫名稱值,accodring ID? 因此,如果我在名稱字段中鍵入與具有指定id的項目不相關的內容,則對響應我sitll獲取與id關聯的名稱的實際值。 因此,這是我的意思是:

  • 實際ULR是:http://mydomain.com/example/123
  • 什麼I型:http://mydomain.com/randomtext/123
  • 和我仍然得到響應:http://mydomain.com/example/123

就像這裏:http://www.theatlantic.com/magazine/archive/1939/03/what-makes-an-american/309021/ 如果您將what-makes-an-american更改爲任意隨機文本,則仍會進入同一頁面。 他們使用重定向嗎?加載時間不是那麼危險嗎?

回答

0

保存此爲您的.htaccess文件:

RewriteEngine On 
RewriteBase/

RewriteCond $1 !^index\.php 
RewriteRule ^(.*)/$ index.php/$1 [L,QSA,NC] 

RewriteCond %{REQUEST_FILENAME} !-f 

RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ $1/ [L,R=301] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php [QSA,L] 

然後,您可以使用REQUEST_URI服務器變量來檢索URL組件。

例如,對於http://mydomain.com/example/value2

$var = split('/', $_SERVER['REQUEST_URI']); 

$var becomes array('example', 'value2'); 
+0

我不認爲這就是我需要的。目前我使用這個'RewriteRule^destination /([0-9] +)/([ - az] *)$ details.php?name = $ 2&id = $ 1 [L]',但是如果我寫一些隨機文本爲2美元(名稱值)它仍然去與傳遞的頁面,但錯誤的文字。我想至少將URL的名稱部分改寫爲正確的一部分。我希望你能忍受。 –

0

不,它不是有害的加載時

<IfModule mod_rewrite.c> 
RewriteEngine On 
# /var1/value2.html to /example.php?id=value1&name=value2 
RewriteRule ^([^/]+)/([^\.]+)\.html$ /example.php?id=$1&name=$2 
</IfModule> 

答案是here

+0

評論以獲得幫助 – faq