2012-02-05 61 views
0

我知道這經常出現在SO上,但我很努力地理解它的一些部分,並希望有人能夠提供幫助。htaccess對於php和pdf文件的URL重寫

我需要採取如下: http://www.xyz.com/news.room/showstory.php?storyid=123456 創造 http://www.xyz.com/newsroom/123456

http://www.xyz.com/news.room/ 創造 http://www.xyz.com/newsroom/

http://www.xyz.com/files/pdf/uk/Wk51.pdf ,另外xyz.co.uk創建 http://www.xyz.com/newsroom/convert/Wk51

和xyz.org也應該重寫tten to xyz.com和所有應該報告回搜索引擎永久重定向

我想在htaccess文件中做到這一點,它也有一個標準的CodeIgniter重寫規則,在其中刪除查詢字符串。

任何人都可以幫助我嗎?我已經嘗試了幾件事,但不能得到任何適用於任何事情的東西!此外,我已經花了五個小時,並且正在慢慢拉我的頭髮!

任何幫助,指向正確的方向等..將不勝感激。

乾杯

+1

請出示你嘗試過什麼。 – Gerben 2012-02-05 20:23:27

回答

0
#redirect any domain other than example.com, to example.com 
RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} !^example.com$ [NC] 
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L] 

RewriteRule ^newsroom/$ /news.room/ 

RewriteRule ^newsroom/([0-9]+)$ /news.room/showstory.php?storyid=$1 

RewriteRule ^newsroom/convert/([^/]+)$ /files/pdf/uk/$1.pdf 
+0

Gerben,對於延遲迴復感到抱歉,我被拉走了,沒有回到我的辦公桌。所以我理解這一點,我認爲在重寫規則部分之後......下一部分是它需要變成的部分,然後是原始部分。我理解1美元的理論,但我是否正確地說[^ /] +表示這裏的任何字符加上$ 1變量? – TIW 2012-02-07 00:27:34

+0

不,「RewriteRule」之後的第一部分是您想要匹配的模式。之後,你想要重寫它。 $ 0是整場比賽; $ 1是第一組括號之間的部分,第二組$ 2等。不是重寫是內部的,所以重寫的url是由apache用來檢索資源,但在用戶地址欄中不可見。 '[^ /]'表示除'/'外的任何字符;加號意味着更多這些字符中的一個。 – Gerben 2012-02-07 16:38:42

+0

啊對了,就像RewriteRule^abc/pdf/+ $ /xyz/2012/publications/$1.pdf會重寫123.com/xyz/2012/publications/Month12.pdf到123.com/abc/pdf/Month12。 PDF?你如何從文件名中刪除單詞「月」? – TIW 2012-02-09 19:43:26