我有一个问题的子域,我用来翻译我的网站。对于前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。
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摘录,包括我用第一个答案所做的修改,我仍然有问题:
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/上时,子变量"en“将被很好地传递。例如,如果我使用https://en.mywebsite.com/login,页面就会被加载,但是子变量"en“不会被传递。
知道吗?谢谢。
发布于 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)也有一个问题,
下列代码应如预期那样工作:
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]https://stackoverflow.com/questions/17396238
复制相似问题