2013-04-29 71 views
1

我有一個簡單的文本框如何刪除'?'在GET的URL中?

<form action="http://www.google.com" method="get"> 
Something <input type="text" name="something"> 
<input type="submit"> 
</form> 

如果我輸入內容的輸入,這將是URL https://www.google.com/?something=something2 - 在這種情況下something2是什麼類型的用戶。 但我想看到這樣的網址https://www.google.com/something=something2

我試過.htaccess但我失敗了。

RewriteEngine On 
RewriteRule .* /%{QUERY_STRING}? [L] 
+3

加入您與:) – Akdr 2013-04-29 13:58:04

+0

添加了的.htaccess – Tyrick 2013-04-29 14:00:21

+0

試圖通過這個閱讀試圖代碼: [http://stackoverflow.com/questions/11099502/htaccess-rewitecond-query-string-with-2-variable-and-rewrite-properly][1] [1]:HTTP: //stackoverflow.com/questions/11099502/htaccess-rewitecond-query-string-with-2-variable-and-rewrite-properly – ChaseTheSun 2013-04-29 14:05:07

回答

0

這個?快到因爲方法=「獲取」的形式,如果將其更改爲POST,所以你會得到在URL數據隱伏沒有,另外一點讓「東西= something2」的網址,你必須使用Java腳本來改變這種形式通過附加你的一部分,而這個Java腳本的動作中可以存在:文本字段的

的onblur

的onClick的提交表單的

的onsubmit但你必須TI句柄你自己提交

+0

謝謝,這似乎有點容易對付! :) – Tyrick 2013-04-29 14:25:17

-2

我可能是錯的,但我不認爲你可以。 '?'告訴網址後面的查詢字符串。至少不是用於傳遞未加密的數據。密碼/用戶名當然是一個不同的故事。

+0

有你們從來沒有聽說過的URL重寫? – MMM 2013-04-29 14:04:09

+0

@MMM url重寫是服務器端的事情,它與瀏覽器發送的內容沒有任何關係。如果瀏覽器處理提交,你不能改變,所以唯一的選擇是防止它發生並手動構建網址。 – eis 2013-04-29 14:18:28

+0

當然,他們是服務器端的東西,但服務器並不在乎你發送的東西。您可以發送'domain.com/666hello',服務器可以讀取前3位數字,然後根據字符串提供一些內容。你說過一個人做不到,但這是可能的。此外,你的回答似乎有點曖昧(「至少對於未加密的數據」,「密碼/用戶名是一個不同的故事」等) – MMM 2013-04-29 14:22:26

3

一個標準查詢參數是如何在一個URL來看看,這是由將它們與?分開。瀏覽器只知道這個標準並遵守它。

如果您想要一個不使用查詢參數的自定義URL模式,請在表單提交或使用服務器端重定向時使用Javascript自己構建URL,以使URL看起來像您想要的樣子。

您在RewriteRule內部重寫的URL,它不會改變URL看起來如何到客戶端。你必須發出重定向從服務器要做到這一點,這應該是這樣的:example.com/foo?bar=baz

  • 服務器重寫URL響應:Location: /foo/bar=baz
    1. 瀏覽器中使用標準的查詢參數的形式提交
    2. 客戶重複請求example.com/foo/bar=baz
    0

    我不知道你爲什麼要這麼做,但是你需要做兩件事情:

    1. 防止提交URL中當您使用GET
    2. 寫正確.htaccess文件來處理

    要執行的第一件事,這樣瀏覽器的默認行爲,添加事件處理程序到表單上的onsubmit事件,阻止默認行爲,然後通過附加輸入值來將用戶重定向到您要使用的URL。

    第二件事可以通過使用重寫規則來實現。