Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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
Apache .htaccess与子域和GET请求_Apache_.htaccess_Mod Rewrite_Rewrite_Subdomain - Fatal编程技术网

Apache .htaccess与子域和GET请求

Apache .htaccess与子域和GET请求,apache,.htaccess,mod-rewrite,rewrite,subdomain,Apache,.htaccess,Mod Rewrite,Rewrite,Subdomain,当用户访问test.domain.co.uk时,我想向他们展示channels/index.php?url=test页面,其中test可以是任何内容 我使用以下代码进行此操作: RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.domain\.co\.uk$ RewriteCond %{HTTP_HOST} ^.+\.domain\.co\.uk$ RewriteRule ^(.*) %{HTTP_HOST}$1 [C] RewriteRule ^

当用户访问test.domain.co.uk时,我想向他们展示channels/index.php?url=test页面,其中test可以是任何内容

我使用以下代码进行此操作:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.domain\.co\.uk$
RewriteCond %{HTTP_HOST} ^.+\.domain\.co\.uk$
RewriteRule ^(.*) %{HTTP_HOST}$1 [C]
RewriteRule ^(.+)\.domain\.co\.uk/? channels/index.php?url=$1 [L]
但是,如果您致电

它将显示channels/index.php?url=test&page=login

我已经尝试了几种方法,它只是将它显示为?url=test

添加

RewriteRule ^(.+)\.domain\.co\.uk(.+)$ channels/index.php?url=$1&page=$2 [L]
直到你的规则结束。并将
$
添加到上一条规则的模式中:

RewriteRule ^(.+)\.domain\.co\.uk/?$ channels/index.php?url=$1 [L]
然后,为了防止循环,将此添加到顶部:

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]
您可以使用此规则:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.co\.uk$
RewriteRule ^((?!channels/index\.php).*)$ /channels/index.php?url=%1&page=$1 [L,QSA]

您想只重写这两个特定的URL,而保留所有其他URL不变吗?很可能你还有其他资源,比如图像、css、js文件……这很好,我可以在之后对它们进行排序。只是到目前为止还不能正常工作的问题。尝试了类似的方法,但只给出了一个内部服务器错误。错误日志“由于可能的配置错误,请求超出了10个内部重定向的限制”再次感谢,但是“RewriteCond:无法编译正则表达式”(?L^ |&)url=[^&]+'”哦,抱歉,这是一个输入错误,现已修复。尝试更新规则。适用于URL后是否有参数,如login/但页面的GET请求变为index.php,否则?在最后一行的$前添加了斜杠,它可以工作,但是,如果您转到test.domain.co.uk,它会转到main index.php,而不是channels/index.phpTried,但是添加$会创建一个内部服务器错误更正:这会使页面的GET值等于channels/index。php@TomWhale查看编辑,在规则顶部添加另一条规则以防止循环,几乎完美地在页面值上添加两个斜杠?尝试使用(.+^[^/]*$),但它说test.domain.co.uklogin无法使用found@TomWhale我在测试时没有看到任何斜线。也许可以尝试将最后一个正则表达式更改为:
^(+++)\.domain\.co\.uk(+++)/*$