2011-05-04 162 views
2

我正在嘗試重定向&重寫一些動態的PHP URL的漂亮和SEO友好的URL。我已經manged通過的.htaccess用下面的代碼成功地做到這一點:SEO和漂亮的URL rewritemap

RewriteCond %{QUERY_STRING} ^somevar=green&nodescription=([a-zA-Z0-9_-]*)$ 
RewriteRule (.*) /green\/%1\/? [L,R=301] 

RewriteRule ^green/([^/]*)/$ /script.php?somevar=green&nodescription=$1&rewrite=on [L] 

這將創建一個有些漂亮網址如下:

http://www.mysite.com/green/aA43-/ 

正如我說的,這工作absolutley罰款。除了一件事。參數nodescription包含一個非描述性的隨機字母,數字和其他字符集。

我想重寫nodecription參數爲更具描述性的。我知道我可以通過Apache使用rewritemap來完成此操作。但是,我沒有經歷過這樣的事情,我也不完全確定從哪裏開始。

正常情況下,我只需更改script.php,以便它包含更多描述性參數,但是這次我無法控制腳本;我正在使用cURL從另一個站點拉它。

任何人都可以給我一個如何退出這個功能的例子嗎?

謝謝!

馬特

+0

進一步的研究表明,爲了打開rewritemap函數,需要訪問apache httpd.conf配置文件。不幸的是我沒有訪問這個文件(共享主機)。所以,我仍然在尋求解決這個問題..任何幫助感激地收到:) – Matt 2011-05-04 22:58:27

回答

1

好,爲了回答我自己的問題,爲了解決這個問題,你需要在你的apache服務器上訪問httpd.conf文件。我的共享託管公司不允許訪問此文件(我懷疑任何人都可以訪問)。

所以我咬了咬牙購買了VPS。我會發布我在這裏採取的步驟,以設置rewritemap,希望它可以幫助失去靈魂:)好吧,這裏去...

我的VPS有WHM安裝,所以在WHM我去:

服務器配置>> Apache的配置>>包括編輯器

前置虛擬主機包括>>所有版本

此功能需要你把任何文本,包括它在你的httpd.conf文件,而無需擔心它會在稍後階段被改寫。如果您的服務器上沒有WHM,那麼您可以直接將文本添加到您的httpd.conf文件中;確保它在任何虛擬主機之外。

OK,所以我包括以下映射聲明和重寫規則:

#Map to redirect (swaps key and value) 
RewriteMap rwmap txt:/home/*/public_html/rdmap.txt 

<Directory /home/*/public_html/test> 

Options All -Indexes 
RewriteEngine on 

RewriteRule ^url/([^/]*)/$ /script.php?foo=${rwmap:$1|$1}&rewrite=on [L] 

</Directory> 

實際的地圖是包含鍵/值對一個簡單的文本文件 - 你需要這個文件放置在RewriteMap rwmap txt:/home/*/public_html/rdmap.txt聲明的目錄。

然後你走了。 Apache現在重寫我的URL,我現在有一些漂亮和漂亮的SEO優化鏈接,這要歸功於我的重寫映射! Hoorah!

+0

謝謝!我處於同樣的情況。我的主機不允許使用RewriteMap,因此我必須使用VPS!這將是有用的:) – Drew 2011-08-23 00:39:06

0
RewriteEngine on 
RewriteRule ^green/([^/]*)/(.*)$ /script.php?somevar=green&nodescription=$1&rewrite=on [L] 

此重寫將允許你傳遞無關與重寫「任意文本」。例如:

http://www.mysite.com/green/aA43-/some-seo-boosting-title 

仍將正確重新路由到script.php;後一部分將被重寫忽略。

+0

謝謝你的答案。這實際上是一個不錯的和簡單的解決方案,並將我凝視在臉上,但我沒有看到它。問題是我想徹底擺脫URL的'/ aA43- /'部分,用/'some-seo-boosting-title'替代它。我不認爲你的解決方案會實現這一目標? – Matt 2011-05-04 16:29:22