如果用户输入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 系统。
答案1
我假设您已经在 DNS 中配置了通配符子域,并且您的服务器配置已配置为接受此类请求。这样这些子域都解析到您的主域的根目录。
我还假设您想将子域保留在浏览器的地址栏中。
.htaccess
然后您可以在文档根目录中的文件中执行以下操作:
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 内部服务器错误)。
例如:
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com
RewriteRule ^ /%1%{REQUEST_URI} [L]
检查REDIRECT_STATUS
环境变量的条件通过阻止重写请求来防止重写循环。但是,如上所述,如果 WordPress 已安装在子目录中,则无需这样做。