2012-09-14 66 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