首页 > 解决方案 > htaccess 通过子域访问文件夹

问题描述

我正在尝试在 .htaccess 中制定规则以通过子域别名(带参数)访问文件夹。

sub.example.com => example.com/sub/index.php
sub.example.com/language-fr => example.com/sub/inner_page.php?lang=fr

我为带有参数的子域找到了一个简单的解决方案。

RewriteCond %{HTTP_HOST} ^sub.example.com
RewriteRule ^(.*)$ /sub/inner_page.php?lang=$1 [L,NC,QSA]

这可以正常工作。当我浏览到 sub.example.com/language-fr 时,我得到了 example.com/sub/inner_page.php?lang=fr 的内容但是当我浏览 sub.example.com 时这不起作用,我看到错误 ERR_TOO_MANY_REDIRECTS .

请告诉我如何正确指定使用 sub.example.com/language-fr 等参数访问 sub.example.com 和内部页面的规则?

标签: regexapache.htaccessmod-rewrite

解决方案


我实际上无法详细解释为什么您在此处输入重定向循环..但这应该是一个可行的解决方案。

RewriteCond一个接一个地使用 AND 相互添加(除非你使用[OR]标志)

我会在 上使用它%{REQUEST_URI}来防止每个案例被另一个案例检测到(^$意思是“空”):

RewriteCond %{HTTP_HOST} ^sub.example.com
RewriteCond %{REQUEST_URI} !^$
RewriteRule ^(.+)$ /sub/inner_page.php?lang=$1 [L,NC,QSA]

RewriteCond %{HTTP_HOST} ^sub.example.com
RewriteCond %{REQUEST_URI} ^$
RewriteRule ^$ /sub/index.php [L,NC,QSA]

推荐阅读