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
Apache .htaccess如果请求url与主机不同,则重定向到CodeIgniter控制器_Apache_.htaccess_Mod Rewrite_Redirect - Fatal编程技术网

Apache .htaccess如果请求url与主机不同,则重定向到CodeIgniter控制器

Apache .htaccess如果请求url与主机不同,则重定向到CodeIgniter控制器,apache,.htaccess,mod-rewrite,redirect,Apache,.htaccess,Mod Rewrite,Redirect,当有人访问我的网站“example.com”-(此网站运行CodeIgniter),我希望能够通过.htaccess检测该请求是否不是“example.com”,是否有人通过“user1.com”访问我的网站(如果CNAME被指向,这应该可以工作,因为我的虚拟主机可以接受传入的请求),然后它们将被重定向到控制器 这是我试图尝试的: RewriteCond %{HTTP_HOST} !^example\.com$ [NC] RewriteCond %{REQUEST_URI} !^/site/%1

当有人访问我的网站
“example.com”
-(此网站运行CodeIgniter),我希望能够通过.htaccess检测该请求是否不是
“example.com”
,是否有人通过
“user1.com”
访问我的网站(如果CNAME被指向,这应该可以工作,因为我的虚拟主机可以接受传入的请求),然后它们将被重定向到控制器

这是我试图尝试的:

RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/site/%1$1
RewriteRule ^(.*)$ http://example.com/site/%1$1 [L,NC,P]
如果可能的话,我是否能够保留外部请求域URL,因此如果请求来自
'user1.com'
就可以了——基本上没有屏蔽

Site是我的控制器的名称,它采用一个参数名

问题

我认为当使用这种方式时,虚拟主机地址无法正常工作,无法显示子页面…

您可以使用以下规则:

RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
RewriteRule ^((?!site/).*)$ http://example.com/site/$1?host=%{HTTP_HOST} [L,NC,P]
要删除www:

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [NE,R=301,L]

mod\u proxy
是否已启用并正常工作?是的。我现在可以使用它,但它似乎正在屏蔽URL,如何保持它通过的原始URL?我以前使用PHP获取URL:$URL=“http://$\u SERVER[http\u HOST]$\u SERVER[REQUEST\u URI]”但现在因为它是一个不同的域,所以它被屏蔽了(有效地),这显示了我的实际域,是否有方法获取URL栏中的域(在PHP中)?或在.htaccess中,使用正在请求的URL并将其作为参数发送?有效地将%{HTTP_HOST}作为参数发送?是
%{HTTP_HOST}
可以作为参数发送,请参阅update.Thank。我可以这样做,但如果我为该特定URL传入一个页面,会发生什么情况?我也可以发送该页面,因为PHP没有接收到它…您可以使用:
RewriteRule^((?!site/)*)$http://example.com/site/$1?主机=%{HTTP\u主机}&页面=%{REQUEST\u URI}[L,NC,P]
同时发送原始URI。您知道如何在所有请求中删除www?