首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Htaccess子域+多语言网站

Htaccess子域+多语言网站
EN

Stack Overflow用户
提问于 2013-07-01 00:56:28
回答 1查看 196关注 0票数 1

我有一个问题的子域,我用来翻译我的网站。对于前4行代码,我没有问题, 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

代码语言:javascript
复制
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]

编辑1

好的,这里有一个更大的htaccess摘录,包括我用第一个答案所做的修改,我仍然有问题:

代码语言:javascript
复制
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/上时,变量"en“将被很好地传递。例如,如果我使用https://en.mywebsite.com/login,页面就会被加载,但是变量"en“不会被传递。

知道吗?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-07-01 01:41:51

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

第二个RewriteRule(未定义的%1)也有一个问题,

下列代码应如预期那样工作:

代码语言:javascript
复制
RewriteBase /
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} !&ad=.*
RewriteCond %{HTTP_HOST} ^([a-z]+)\.mywebsite\.com$ [NC]
RewriteRule ^(.*) ?sub=%1 [NC,L]

RewriteCond %{HTTP_HOST} ^([a-z]+)\.mywebsite\.com$ [NC]
RewriteRule ^([-a-z0-9]+)-([A-Za-z0-9]+)\.html$ ?sub=%1&menu=ad&ad=$2 [L]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17396238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档