2012-09-14 47 views
-1

我似乎無法弄清楚如何做URL重寫,這樣我可以從我所有的社區網站刪除/網絡/:的Liferay:刪除/網絡/來自所有社區網站

domain.com/web/communitysite1/page 
domain.com/web/communitysite2/page 
domain.com/web/communitysite3/page 
domain.com/web/communitysite4/page 

我希望它是,

domain.com/communitysite1/page 
domain.com/communitysite2/page 
domain.com/communitysite3/page 
domain.com/communitysite4/page 

下面是Liferay的,該解決方案使用虛擬主機有一個thread;但是,這隻適用於該域名的社區站點之一,但我需要的域名對於我所做的所有社區站點都是相同的。

+0

哎呀,我忘記了liferay上的線程url; http://www.liferay.com/community/forums//message_boards/message/447746 – Seed

回答

0

謝謝@Yazmat你的善意幫助。 @Prakash K這是我目前使用的,這是一個使用代理mod的不同解決方案。

ProxyHTMLExtended On ProxyHTMLEnable On SetOutputFilter INFLATE;proxy-html;DEFLATE ProxyHTMLURLMap ^/web/(.*)$ /$1 Rli

0

首先,你必須manualy更改網頁從domain.com/web/community鏈接...到domain.com/community

之後,你需要重寫規則重寫新的URL到老不通知用戶:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !^web/ 
RewriteRule ^(.*)$ /web/$1 [L,QSA] 

然後,你將需要一個規則來重定向仍然可以訪問舊的URL到新的用戶,而改變自己的瀏覽器鏈接:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} ^web/ 
RewriteRule ^web/(.*)$ /$1 [L,QSA,R=301] 

然後你需要混合起來,但是,如果你這樣做,你會得到一個無限循環,所以你需要一些東西來避免(我使用的一個技巧是添加一個可選參數到第一個規則,並簽入第二個如果它存在與否,如果它然後你不重定向):

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} ^web/ 
RewriteCond %{QUERY_STRING} !(.*&)?r=0(&.*)?$ 
RewriteRule ^web/(.*)$ /$1 [L,QSA,R=301] 

RewriteCond %{REQUEST_FILENAME} !^web/ 
RewriteRule ^(.*)$ /web/$1?r=0 [L,QSA] 
+0

你是什麼意思在第一部分...手動改變我的網頁鏈接?我假設,但我認爲我錯了這個假設,你的意思是改變社區網站中每個網頁的友好網址?或者你的意思是在主域名的網站頁面中創建反映社區網站頁面中的頁面? 順便說一句,我真的很感激你的迴應。謝謝! – Seed

+0

我的意思是,例如,您有一個包含如下鏈接的頁面home.html:'link',您需要將其更改爲'link'(這就是我所要的) – Oussama

+0

哦,好的,謝謝。 我在我的虛擬主機文件中配置了這個,並且這個 'RewriteBase /'打破了我的apache ... – Seed