指向PHP的URL,参数指向子域

指向PHP的URL,参数指向子域,php,.htaccess,redirect,url-rewriting,subdomain,Php,.htaccess,Redirect,Url Rewriting,Subdomain,我们一直被困在一个问题上,即使有关于StackOverflow的所有文章,我们似乎也无法解决这个问题;我们有一个类似“www.example.nl/domain.php?user=somename”的网站,我们需要用户通过输入“somename.example.nl”来访问该页面。我们已经尝试了很久,但没有一个答案对我们有用 我们尝试过类似以下代码: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d R

我们一直被困在一个问题上,即使有关于StackOverflow的所有文章,我们似乎也无法解决这个问题;我们有一个类似“www.example.nl/domain.php?user=somename”的网站,我们需要用户通过输入“somename.example.nl”来访问该页面。我们已经尝试了很久,但没有一个答案对我们有用

我们尝试过类似以下代码:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^(www\.)?example.nl$ [NC]
RewriteRule ^([^/]*)/?$ domain.php?user=$1 [NC,QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_URI} ^/index.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} !^(www|mail).example.nl$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+).example.nl$ [NC] 
RewriteRule ^([^/]*)/?([^/]*)/?([^/]*)/?$ domain.php?user=%2 [NC,QSA,L]
此外,在此之前,我们尝试了以下方法:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+).example.nl$ [NC] 
RewriteRule ^([^/]*)/?([^/]*)/?([^/]*)/?$ domain.php?user=$1 [NC,QSA,L]
如果这是一个转载,我道歉,但我已经被困在这几个小时,我真的需要一个明天到期的项目的答案


谢谢你抽出时间来帮助我们

您不仅需要设置代码和web服务器来处理此问题,还需要设置DNS配置。您需要使用通配符匹配将所有子域重定向到同一IP地址

以下是在web浏览器中打开URL的工作原理:

  • web浏览器必须首先进行DNS查找,以将主机名(在您的示例中,
    somename.example.nl
    转换为IP地址
  • web浏览器向其找到的IP地址发送HTTP请求,请求URL包含输入的FQDN(
    somename.example.nl
  • web服务器使用虚拟主机或某些其他配置类型来确定如何处理给定FQDN的请求

  • 因此,必须通过DNS解析此名称
    somename.example.nl
    ,否则用户的计算机将不知道在哪里(到哪个IP地址)发送HTTP请求。

    您的DNS设置正确,是吗?我们没有更改DNS,因为我们不想要实际的子域,我们只想让作为子域输入URL的用户查看“www.example.nl/domain.php?user=somename”页面。是的,但是用户的计算机仍然必须知道如何查找somename.example.nl并将其解析为IP地址,在那里它可以发送HTTP请求。这就是我们试图通过htaccess文件实现的。我们不必更改DNS,因为我们没有手动为用户创建子域。是的,您知道。请参阅下面的答案。关于通配符DNS条目的基本信息,我相信您可以找到更好的文章: