例如,我有 URL subdomain.example.com
。
如何从 .htaccess
中的 URL 获取子域和域?
我需要做这样的事情:
RewriteRule (.*) example.com/subdomain/index.php
我想出了一个子域,但对于域仍然没有运气。
RewriteCond %{HTTP_HOST} ^(^.*)\.example.com
RewriteRule (.*) example.com/%1/index.php
最佳答案
RewriteCond %{HTTP_HOST} ^(^.*)\.example.com RewriteRule (.*) example.com/%1/index.php
同样的原则也适用于域(尽管您在此处使用的CondPattern似乎无效?)。看起来您需要域名+TLD(基本上是子域名之后的所有内容),因此请尝试以下操作:
RewriteCond %{HTTP_HOST} ^(.+?)\.(.+?)\.?$
RewriteRule ![^/]+/[^/]+/index\.php$ %2/%1/index.php [L]
(.+?)
CondPattern 的一部分获取子域(?
使其成为非贪婪的)。 (.+?)
部分获取域(主机的剩余部分),这也是非贪婪的,以避免匹配完全限定域上的可选尾随点(例如 subdomain.example.com.
)。
RewriteRule
模式 ![^/]+/[^/]+/index\.php$
仅当 URL 不是 /<something>/<something>/index.php
形式时才进行重写,从而防止重写循环(500 错误) .
关于apache - 如何获取htaccess中的子域名和域名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43296201/