Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用htaccess和php控制多级子域_Php_.htaccess - Fatal编程技术网

如何使用htaccess和php控制多级子域

如何使用htaccess和php控制多级子域,php,.htaccess,Php,.htaccess,我有以下动态URL 我的.htaccess文件中有以下内容 RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC] RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.domain\.com$ [NC] RewriteRule !^index\.php($|/) sub.php?name=%2 [PT,L] 它工作正常,显示了与foo子域相关的数据。但是当我试图去拜访 其中,foo是一个通配符dns子域

我有以下动态URL

我的.htaccess文件中有以下内容

RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.domain\.com$ [NC]
RewriteRule !^index\.php($|/) sub.php?name=%2 [PT,L]
它工作正常,显示了与foo子域相关的数据。但是当我试图去拜访

其中,foo是一个通配符dns子域,bla是我的帖子标题,9是帖子id

我补充说

RewriteRule ^/([^/]+)-([^/]+)\.html$ post.php?name=%2&post=$1&postid=$2 [PT,L]
之后

所以我的htaccess代码变成了

RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.domain\.com$ [NC]
RewriteRule !^index\.php($|/) sub.php?name=%2 [PT,L]
RewriteRule ^/([^/]+)-([^/]+)\.html$ post.php?name=%2&post=$1&postid=$2 [PT,L]
它仍然显示其主页,即sub.php而不是post.php
我应该对我的.htaccess文件做什么更改?

你真的需要在这里打两个问号吗:post.php??name=%2&post=$1&postd=$2

我单独用php解决了这个问题。对我来说,它比Apache.htaccess脚本更简单。。。而且更易于维护(一旦编写脚本),并具有更多功能

我使用了一个.htaccess,它将所有访问重定向到一个文件。这一个使用$\u SERVER[“SERVER\u NAME”]变量检查访问的子域,其余部分使用$\u GET[“q”]中的变量

这是.htaccess文件:

RewriteEngine on
RewriteRule ^redir.php$ redir.php [L,QSA]
RewriteRule ^(.*)$ redir.php?q=$0 [L,QSA]
第一个确保没有无限循环,第二个将所有内容重定向到文件

然后,redir文件包括所需的任何文件,而且它非常简单-将$\u服务器[“QUERY\u STRING”],$\u GET变量设置为新值,将cwdir设置为更改工作目录(文件),设置_include\u路径(包括路径)

它起作用了。但这有点傻:D

RewriteEngine on
RewriteRule ^redir.php$ redir.php [L,QSA]
RewriteRule ^(.*)$ redir.php?q=$0 [L,QSA]