Apache .htaccess mod_基于域的重写
我的htaccess中有以下规则,我需要修改它以将变量添加到重新编写的url的末尾。基本上,我有两个指向同一主机的域,并且根据它使用的域显示不同的站点Apache .htaccess mod_基于域的重写,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我的htaccess中有以下规则,我需要修改它以将变量添加到重新编写的url的末尾。基本上,我有两个指向同一主机的域,并且根据它使用的域显示不同的站点 RewriteCond %{HTTP_HOST} ^(www\.)?rrr\.me RewriteCond %{REQUEST_URI} !^/rrr Rewriterule ^(.*)$ /rrr/$1 [L] 如果有人进入rrr.me或www.rrr.me他们会在我网站的rrr目录中找到index.php。这太棒了 我现在需要能够向ind
RewriteCond %{HTTP_HOST} ^(www\.)?rrr\.me
RewriteCond %{REQUEST_URI} !^/rrr
Rewriterule ^(.*)$ /rrr/$1 [L]
如果有人进入rrr.me
或www.rrr.me
他们会在我网站的rrr目录中找到index.php。这太棒了
我现在需要能够向index.php添加一个变量。因此,有人会键入rrr.me/abc
,它会以这种方式将abc附加到index.php的末尾index.php?var1=abc
在奥拉夫·迪奇(Olaf Dietsche)在评论中提出建议后,重新编写新规则
RewriteCond %{HTTP_HOST} ^(www\.)?rrr\.me
RewriteCond %{REQUEST_URI} !^/rrr
RewriteCond %{REQUEST_URI} !/assets/
Rewriterule ^.*$ /rrr/index.php?rrr=$0 [L]
RewriteCond %{HTTP_HOST} ^(www\.)?rrr\.me
RewriteCond %{REQUEST_URI} !^/rrr
Rewriterule ^assets/.*$ /rrr/$0 [L]
将请求的URL追加为查询字符串
Rewriterule ^.*$ /rrr/index.php?var1=$0 [L]
要排除资产
目录,必须使用附加的
对于资产文件,可以使用类似的重定向
RewriteCond %{HTTP_HOST} ^(www\.)?rrr\.me
RewriteCond %{REQUEST_URI} !^/rrr
Rewriterule ^assets/.*$ /rrr/$0 [L]
谢谢你。我将规则的第三行替换为您的行,现在我收到一个内部服务器错误。有什么想法吗?@superphonic您请求了哪个URL?您有权访问服务器日志吗?添加重写规则后,我转到rrr.me并获得一个内部服务器错误。当我把我的重写规则放回原处时,它就像预期的那样工作。我没有更改RewriteCond。@superphonic我更改了正则表达式以包含根目录。请看更新的答案。哦哦,非常接近。变量现在被传递到index.php OK。但是现在我的图像、js文件和css文件都找不到了。它们位于/rrr目录中名为“资产”的文件夹中。资产被提取为变量并附加到index.php文件中。对不起,可能应该告诉你那个目录中有一个子目录。我修改了最后的规则。
!资产
条件必须添加到第一条规则中,第二条规则必须具有!rrr规则也是如此。希望对你有帮助,马上!谢谢你的帮助,非常感谢。我也学到了不少:——)
RewriteCond %{HTTP_HOST} ^(www\.)?rrr\.me
RewriteCond %{REQUEST_URI} !^/rrr
Rewriterule ^assets/.*$ /rrr/$0 [L]