2013-07-08 34 views
0

我需要做一些重写规则列入的.htaccess符合下列条件:的.htaccess重写规则语法

(www).site.com/setup --> redirects to: www.site.com/setup 
demo.site.com/setup --> redirects to: www.site.com/demo/setup 
(www).site.com/xyz --> redirects to: www.site.com/web/xyz 
demo.site.com/xyz --> redirects to: www.site.com/demo/web/xyz 

注意(WWW)意味着用户可以输入和没有输入www和“XYZ”可以是任何字符串,但与关键字“setup”不同(由于前两条规则)。

这是我尝试(使用[L],使例外),但我不知道这是否是好的就够了:

RewriteCond ${REQUEST_URI} demo. 
RewriteCond ${REQUEST_URI} /setup 
RewriteRule /demo/setup [L] 

RewriteCond %{HTTP_HOST} !^www\. 
RewriteCond ${REQUEST_URI} /setup 
RewriteRule /setup [L] 

RewriteCond ${REQUEST_URI} demo. 
RewriteRule ^/(.*)$ www.site.com/demo/web/$1 [L] 

RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^/(.*)$ www.site.com/web/$1 [L] 

任何想法?

卢西亚诺

+0

我们展示你的尝试。 – anubhava

+0

你试过了什么? ca人需要很多东西,但如果你不尝试它不算在这里伙伴 – jycr753

+0

我添加了我的尝试,但不知道它。 – Luciano

回答

1

启用mod_rewrite的,并通过httpd.conf的.htaccess,然后把这个代码在你.htaccessDOCUMENT_ROOT目录:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^(demo)\.(.+)$ [NC] 
RewriteRule ^(setup)/?$ http://www.%2/%1/$1 [L,R=301,NC] 

RewriteCond %{HTTP_HOST} ^(demo)\.(.+)$ [NC] 
RewriteRule ^(xyz)/?$ http://www.%2/%1/web/$1 [L,R=301,NC] 

RewriteCond %{HTTP_HOST} !^demo\. [NC] 
RewriteRule ^(xyz)/?$ /web/$1 [L,R=301,NC] 
+0

哇,这与我所做的完全不同。我会试试看,让你知道!谢谢! – Luciano