regex - 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 和内部页面的规则?
解决方案
我实际上无法详细解释为什么您在此处输入重定向循环..但这应该是一个可行的解决方案。
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]
推荐阅读
- android - Android Studio 4.1.3 无法构建面向 API 级别 30 的应用
- php - LARAVEL7上传图片但未显示在页面中
- html - 带侧栏的居中包装
- erlang - 了解 erlang ETS 匹配规范的行为
- http - 在生产中收到来自 HTTP 请求的响应后,您会做什么?
- microsoft-graph-api - Microsoft Graph API 创建 OnlineMeetings 错误 - 不应为空\r\n参数名称: 会议
- typescript - 如何将 Typescript“对象”定义为所有接口类型的记录
- android - 带有计时器崩溃的Android服务更新UI
- terraform - 使用 terragrunt generate provider 块会导致与模块中的 require providers 块发生冲突
- html - 如何定位元素?