2017-07-06 157 views
0

我通常使用這個網站來解決我的問題,但第一次我找不到合適的問題,所以原諒我,如果它真的存在!htaccess多個URL重定向

目前,我有這樣的格式有效的網址:

http://www.example.com/index/modules/news/article.php?storyid=15807 

即由CMS動態生成的到底有多少,並因此改變了發佈任何新的內容。

爲了使用較短的網址,我想這些頁面被訪問的子域在這樣的格式:

http://news.example.com/n15807 

請幫幫我,讓我知道,如果有更好的選擇,而不是使用htaccess的。

回答

0

當然!你可以在apache的虛擬主機配置文件中使用mod_rewrite。

除了諷刺之外,重新路由網址的方式是使用接受url的工具並對其執行某些操作,這在典型的PHP安裝中爲apache。如果PHP能夠在不使用http服務器的情況下接受連接,那麼PHP可以做到這一點。我想可以使用php構建一個服務器並將其作爲單例運行,但我從來沒有聽說過這樣的事情。

所以這裏的東西,使用.htaccess和mod_rewrite並不難,如果你明白你想要做什麼。就你而言,你希望能夠將news.example.com/n15807翻譯成非常長的uri。真正長的uri是服務器實際加載的內容。

mod_rewrite實際上與正則表達式匹配並將其替換爲另一個uri。所以,你會嘗試像^([^w]{3}).example.com/([a-z])([0-9]+)$匹配的東西,並用它在/index/modules/$1/article.php?storyid=$3替換值(我不知道在號碼前n個應該的意思。)

我給正則表達式僅用於點你在正確的方向;我沒有測試過它。 [編輯 - 它絕對不會像書面那樣工作;自從我使用mod_rewrite以來已經有一段時間了。但這個想法仍然有效。 FWIW,我不會嘗試使用子域名,但]

摘要:使用與url一起使用的工具。最容易訪問的方式是使用.htaccess。一旦你弄清楚了,你就完成了。您可以在未來的網站中重複使用它。

+0

謝謝你的回答,但我不是一個.htaccess專家。你可以用它的確切條件來說嗎? –

+0

我不是......但你接受了這個想法並與​​之一起運行。去的路! –

0

經過幾個小時的搜索,我終於明白了!

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^news.example.com$ 
RewriteRule ^news/(.*)$ http://www.example.com/index/modules/news/article.php?storyid=$1\#siteBody [R=301,L,NE] 

認爲它可能會幫助別人有一天不會像我那樣花時間!