.htaccess的子域名+多语种网站
问题描述:
我有我来翻译我的网站子域的问题。用第一行代码,我没问题,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§ion_name=$1 [L]
RewriteRule ^all\/([-A-Za-z0-9]+)\/([-A-Za-z0-9]+)$ ?sub=%1&menu=ads§ion_name=$1&category_name=$2 [L]
RewriteRule ^all\/([-A-Za-z0-9]+)\/([-A-Za-z0-9]+)\/([-A-Za-z0-9]+)$ ?sub=%1&menu=ads§ion_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“恩”不通过。
有什么想法?谢谢。
答
的问题是,URL被改写了两次,第一次/sample-vg.html
正确地改写为?sub=en&menu=ad&ad=fg
,然后在第二次运行新的URL再次被改写为?sub=en
(L标志只是停止当前的运行,而不是整个过程中,take a look here)
还有一个问题,第二个重写规则(未定义%1),
预期下面的代码应该工作:
3210
谢谢胺,它工作正常。但是,现在我的问题是我有很多不同的规则就像一个'重写规则^([ - A-Z0-9] +) - ?([A-ZA-Z0-9] +)\ html $进行分=%1&菜单=广告&广告= $ 16 [L]'所以,我必须加在上面,每个规则,像'的RewriteCond%{QUERY_STRING}!&AD = *'这里的 “广告” 的变化?是否有解决方案可以在一行中管理所有**%{QUERY_STRING} **? –
我已经更新了我的第一篇文章,包括修改,如果你想看看它。 –