2017-09-15 71 views
0

您好,我需要幫助重定向我的.htaccess文件。我想添加一個字符串到URL的末尾。例如:使用.htaccess文件將字符串添加到url

當有人訪問這個網址:

www.mysite.com/example

我想重寫URL這樣說:

www.mysite.com/result.html?search=example

所以我只需要添加字符串result.html?search=之前,無論是在網址的末尾。

這個詞的例子只是一個佔位符,我需要放在那裏工作的任何單詞。

謝謝!

+0

對不起,但你不清楚你實際要求什麼。請在你的問題精確:這兩個變種是_external_ URL實際上是由客戶端(瀏覽器)要求什麼_internal_資源它應該被改寫成?你的例子讀起來有點像你正在尋找重定向,而不是重寫。 – arkascha

+0

客戶端請求的網址是'www.mysite.com/example',內部資源應重寫爲'www.mysite.com/result.html?search = example' –

+0

示例是文件夾或文件? –

回答

1

這應該會有幫助。

RewriteEngine on 
RewriteBase/

RewriteRule ^page/([^/]+)/? result.html?search=$1 
+0

對我來說,問題實際上讀取不同的,這就是爲什麼我更喜歡發表任何答案... – arkascha

+0

之前問@ arkascha你所說的話也是有道理的,可以從不同的角度來看待問題,但我認爲這是他在這裏想要達到的目標。讓我們再來澄清一下。 –

1

根據您的附加評論我想這是你實際上是在尋找這樣一個問題:

RewriteEngine on 
RewriteRule ^/?(.+)/?$ /result.html?search=$1 [END] 

如果您遇到了這一原則,HTTP狀態500(「內部服務器錯誤」),那麼你有可能會運行一個非常舊的apache http服務器版本。嘗試使用[L]標誌,而不是[END]標誌。在這種情況下,你也會在你的http服務器錯誤日誌文件中找到相應的提示。

上述規則在http服務器主機配置和動態配置文件(.htaccess樣式文件)中同樣適用。顯然重寫模塊必須在http服務器上加載並激活。如果您決定使用動態配置文件,那麼您還需要確保這些文件實際上是由http服務器考慮的。閱讀有關該文檔的AllowOverride指令。

還有一個常規提示:你應該總是喜歡在http服務器(虛擬)主機配置中放置這樣的規則,而不是使用動態配置文件(.htaccess樣式文件)。這些文件出了名的錯誤,很難調試,他們真的放慢了服務器。它們只支持作爲的情況下最後的選擇,你沒有對主機配置控制(讀:真的很便宜的託管服務提供商),或者如果你有依賴於寫自己的重寫規則(這是一個明顯的安全惡夢的應用)。

+0

輝煌:)儘管只是假設,你的答案有很多深度。 –

+0

感謝您的回答,但我得到了一個500錯誤['L]'和'[END]'我從你的答案中學到了很多東西,儘管如此謝謝! –

+0

@cup_of最有可能的原因是重寫模塊根據您的評論而被_not_加載......如前所述:您應該查看您的http服務器錯誤日誌文件。這是您可以閱讀有關服務器遇到的問題的更詳細的內部信息的地方。 – arkascha