首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过.htaccess文件显示基于url的通配符子域内容?

问如何通过.htaccess文件显示基于url的通配符子域内容?
EN

Server Fault用户
提问于 2018-12-24 12:41:31
回答 1查看 1.5K关注 0票数 1

如果用户输入example.domain.com,我希望他查看www.domain.com/example中的内容。

另一个例子是:

用户将请求example.domain.com/photos/gallery.php?from=var1&no=3,他将查看www.domain.com/example/photos/gallery.php?from=var&no=3中的内容。

注意:在我的子文件夹(通配符)中,我将安装WordPress,所以我也必须记住这个URL系统。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2018-12-24 13:02:47

我假设您已经在DNS中配置了通配符子域,并且您的服务器配置被配置为接受此类请求。这样,这些子域都将解析为主域的根目录。

我还假设您希望将子域保留在浏览器的地址栏中。

然后,您可以在文档根目录中的.htaccess文件中执行如下操作:

代码语言:javascript
复制
RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com
RewriteRule ^ /%1%{REQUEST_URI} [L]

这就排除了www子域被重写。

提供子目录有自己的.htaccess文件和mod_rewrite指令(正如您期望的WordPress),那么就没有其他需要做的事情了。

更新:但是,如果子目录中没有安装WordPress,即。子目录中没有包含.htaccess指令的mod_rewrite,那么您需要通过添加一个附加条件来修改上面的代码,以防止重写循环(500个内部服务器错误)。

例如:

代码语言:javascript
复制
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com
RewriteRule ^ /%1%{REQUEST_URI} [L]

检查REDIRECT_STATUS环境变量的条件通过阻止重写请求来防止重写循环。但是,如上所述,如果WordPress已经安装在子目录中,则这是不必要的。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/946504

复制
相关文章

相似问题

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