使用 .htaccess 捕获域名

Catching the domain name with .htaccess

我在使用 .htaccess 和 modrewrite 方面还很陌生。

我在php有一个多租户网站,每个租户都可以将他购买的域名指向我的服务器ip后保存在应用程序数据库中。

现在我正在尝试通过 .htaccess 编写一个重写规则,以便当用户在地址栏中键入他的域时(例如 www.example.com),.htaccess 解析主机名并将其作为参数传递给一个索引页面,这样每个对 www.example.com 的请求都会变成这样: /index.php?domain=www.example.com .

甚至 www.example.com/user 成为 /index.php?domain=www.example.com&url=user

如何使用 .htaccess 实现?

感谢您的帮助!

您可以在站点根目录 .htaccess 中使用此规则:

RewriteEngine On

RewriteCond %{QUERY_STRING} !domain= [NC]
RewriteRule ^(?:index\.php)?$ index.php?domain=%{HTTP_HOST} [L,QSA,NC]

RewriteCond %{QUERY_STRING} !domain= [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php?domain=%{HTTP_HOST}&url=%{REQUEST_URI} [L,QSA]