2013-07-01 101 views
1

我有我来翻译我的网站子域的问题。用第一行代码,我没问题,sub var传递正常(http://en.mywebsite.com/给出http://mywebsite.com?sub=en)。 5日线是用来管理广告,一旦我点击喜欢http://en.mywebsite.com/blue-chair-Vha6J.html的页面没有加载链接,我留在主页上。它应该给我像http://mywebsite.com?sub=en&menu=ad&ad=Vha6J。取而代之的是,它给了我http://mywebsite.com?sub=en.htaccess的子域名+多语种网站

RewriteBase/
RewriteCond %{REQUEST_URI} ^/$ 
RewriteCond %{HTTP_HOST} ^([a-z]+)\.mywebsite\.com$ [NC] 
RewriteRule ^(.*) ?sub=%1 [NC,L] 

RewriteRule ^([-a-z0-9]+)-([A-Za-z0-9]+)\.html$ ?sub=%1&menu=ad&ad=$2 [L] 

[EDIT 1]

好的,这是一个更大的htaccess的提取物,包括我与第一答案进行的修改,以及我仍然有问题:

RewriteBase/

RewriteCond %{REQUEST_URI} ^/$ 
RewriteCond %{QUERY_STRING} !&menu=.* 
RewriteCond %{HTTP_HOST} ^([a-z]+)\.mywebsite\.com$ [NC] 
RewriteRule ?sub=%1 [NC,L] 

RewriteCond %{HTTP_HOST} ^([a-z]+)\.mywebsite\.com$ [NC] 

RewriteRule ^cart$ ?sub=%1&menu=cart [L] 
RewriteRule ^login$ ?sub=%1&menu=login [L] 

########### AD 
RewriteRule ^([-a-z0-9]+)-([A-Za-z0-9]+)\.html$ ?sub=%1&menu=ad&ad=$2 [L] 
RewriteRule ^([-a-z0-9]+)-([A-Za-z0-9]+)\.html\/([A-Za-z0-9]+)$ ?sub=%1&menu=ad&ad=$2&secret=$3 [L] 

########### ADS 
RewriteRule ^all\/([-A-Za-z0-9]+)$ ?sub=%1&menu=ads&section_name=$1 [L] 
RewriteRule ^all\/([-A-Za-z0-9]+)\/([-A-Za-z0-9]+)$ ?sub=%1&menu=ads&section_name=$1&category_name=$2 [L] 
RewriteRule ^all\/([-A-Za-z0-9]+)\/([-A-Za-z0-9]+)\/([-A-Za-z0-9]+)$ ?sub=%1&menu=ads&section_name=$1&category_name=$2&subCategory_name=$3 [L] 

########### SHOPS 
RewriteRule ^shops$ ?sub=%1&menu=shops [L] 

########### SHOP 
RewriteRule ^([-a-z0-9]+)$ ?sub=%1&menu=shop&shop=$1 [L] 
RewriteRule ^([-a-z0-9]+)\/([-a-z0-9]+)$ ?sub=%1&menu=shop&shop=$1&category_name=$2 [L] 

当我的主页https://en.mywebsite.com/,在 VAR“en”是通过罚款。如果我去https://en.mywebsite.com/login例如,页面加载,但 VAR“恩”不通过。

有什么想法?谢谢。

回答

0

的问题是,URL被改写了两次,第一次/sample-vg.html正确地改写为?sub=en&menu=ad&ad=fg,然后在第二次运行新的URL再次被改写为?sub=en(L标志只是停止当前的运行,而不是整个过程中,take a look here

还有一个问题,第二个重写规则(未定义%1),

预期下面的代码应该工作:

​​3210
+0

谢谢胺,它工作正常。但是,现在我的问题是我有很多不同的规则就像一个'重写规则^([ - A-Z0-9] +) - ?([A-ZA-Z0-9] +)\ html $进行分=%1&菜单=广告&广告= $ 16 [L]'所以,我必须加在上面,每个规则,像'的RewriteCond%{QUERY_STRING}!&AD = *'这里的 “广告” 的变化?是否有解决方案可以在一行中管理所有**%{QUERY_STRING} **? –

+0

我已经更新了我的第一篇文章,包括修改,如果你想看看它。 –