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?