![](/img/trans.png)
[英]How do I get .htaccess to redirect from wildcard subdomain page to wildcard subdomain folder
[英]How do I redirect any subdomain through htaccess as GET parameter?
因此,如果用户输入london.abcd.com,则需要转到abcs.com/show.php?loc=london,同时仍显示URL london.abcd.com
另一个示例:(输入)sydney.abcd.com->(转到)abcd.com/show.php?loc=sydney,URL显示sydney.abcd.com
如何通过本地主机(在Windows上为XAMPP)和实际在线服务器的HTACCESS来实现此目的?
到目前为止已经尝试过了,但是没有用。 将我重定向回index.php
RewriteCond %{HTTP_HOST} !^(www)\. [NC]
RewriteCond %{HTTP_HOST} ^(.*)\.(.*)\.com [NC]
RewriteRule (.*) https://www.%2.com/show.php?loc=%1 [NC,L]
这将是您建议的有效变体。 但是请注意,它将忽略请求的URL中指定的任何路径:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.exmaple\.com$
RewriteCond %{HTTP_HOST} ^(\w+)\.example\.com$
RewriteRule ^ https://www.example.com/show.php?loc=%1 [R=301,QSA]
一个好主意是从302临时重定向开始,然后在确定一切都已正确设置之后,才将其更改为301永久重定向。 这样可以防止在尝试时缓存问题...
在对该答案的评论中,您指出您实际上不希望像问题中所写的那样进行重定向,而是内部重写。 因此,不应更改浏览器中的可见URL,而应仅更改内部处理。 稍加修改即可实现:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.exmaple\.com$
RewriteCond %{HTTP_HOST} ^(\w+)\.example\.com$
RewriteRule ^ /show.php?loc=%1 [END,QSA]
如果您使用上述规则收到内部服务器错误(http状态500),则很可能是您运行了非常旧版本的apache http服务器。 在这种情况下,您将在http服务器错误日志文件中看到对不支持的[END]
标志的明确提示。 您可以尝试升级或使用旧的[L]
标志,在这种情况下它可能会起作用,尽管这在一定程度上取决于您的设置。
如果您使用上述规则收到内部服务器错误(http状态500),则很可能是您运行了非常旧版本的apache http服务器。 在这种情况下,您将在http服务器错误日志文件中看到对不支持的[END]
标志的明确提示。 您可以尝试升级或使用旧的[L]
标志,在这种情况下它可能会起作用,尽管这在一定程度上取决于您的设置。
此规则将在http服务器主机配置或动态配置文件(“ .htaccess”文件)中同样起作用。 显然,重写模块需要加载到http服务器内部并在http主机中启用。 如果使用动态配置文件,则需要注意在主机配置中完全启用了它的解释,并且该解释位于主机的DOCUMENT_ROOT
文件夹中。
还有一个一般性说明:您应该始终喜欢将此类规则放在http服务器主机配置中,而不要使用动态配置文件(“ .htaccess”)。 这些动态配置文件增加了复杂性,通常是导致意外行为,难以调试的原因,并且确实降低了http服务器的速度。 仅当您无法访问真正的http服务器主机配置(阅读:真正便宜的服务提供商)或坚持编写自己的规则的应用程序(这显然是安全的噩梦)时,才提供它们作为最后的选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.