Apache rewrite为admin.example.com使用不同的index.php

Apache rewrite为admin.example.com使用不同的index.php,apache,.htaccess,codeigniter,lamp,.htpasswd,Apache,.htaccess,Codeigniter,Lamp,.htpasswd,我的Apache已经生锈了,但我一直在努力尝试在共享托管服务器上为客户端创建一个管理员 这是一个旧的代码点火器站点,PHP可以根据URL指定去哪里 在.htaccess中,我试图用以下内容重写: RewriteCond %{HTTP_HOST} ^staging\.admin\.example\.com$ RewriteRule ^$ "http\:\/\/staging\.example\.com\/admin\.index\.php"[L] 目前,我只想在没有500个错误的情况下走到这一

我的Apache已经生锈了,但我一直在努力尝试在共享托管服务器上为客户端创建一个管理员

这是一个旧的代码点火器站点,PHP可以根据URL指定去哪里

在.htaccess中,我试图用以下内容重写:

RewriteCond %{HTTP_HOST} ^staging\.admin\.example\.com$
RewriteRule ^$ "http\:\/\/staging\.example\.com\/admin\.index\.php"[L] 
目前,我只想在没有500个错误的情况下走到这一步

之后,我想保护管理区域,我打算尝试:

SetEnvIf Host admin.staging.example.com passreq
AuthType Basic
AuthName "Password Required"
AuthUserFile /home/user/.htpasswds/admin.staging.example.com/.htpasswd
Require valid-user
Order allow,deny
Allow from all
Deny from env=passreq
Satisfy any
现在我被告知,托管提供商将启用mod_env,同时将我们移动到允许SSH登录的服务器(我坚持这一点)

这是Apache2.4。有人能看出我哪里做错了,或者有其他建议吗

谢谢!
Chris

第二行不要使用双引号,请尝试下面的代码

RewriteEngine On
RewriteBase /
# for main domain
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule ^$ /index.php [L]
# for subdomain
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$ [NC]
RewriteRule ^$ /subdirectory/index.php [L]

不要对第二行使用双引号,请尝试下面的代码

RewriteEngine On
RewriteBase /
# for main domain
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule ^$ /index.php [L]
# for subdomain
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$ [NC]
RewriteRule ^$ /subdirectory/index.php [L]

相对于
example.com/
,文件系统上的
admin.example.com/
指向哪里?“使用不同的index.php”-这可能是一个前端控制器?您希望路由到此备用前端控制器的URL是什么?你的.htaccess中有什么?通过在替换字符串中包含绝对URL,mod_rewrite将隐式触发外部重定向(而不是重写)。标志和替换参数之间没有空格(这将导致格式错误的重定向)。mod_env与此有什么关系?(mod_env应该已经可用了。)该网站已经建立并运行了10年,但我想做的事情之一是创建一个更好的目录结构。现在有一个主应用程序和一个管理应用程序位于DOCROOT之上,与同一共享主机帐户上的其他域处于同一级别,这感觉不太对。除此之外,即使您单击“取消”,auth也会允许用户进入,这是另一个问题。所以我尝试了各种排列方式,但目前我试图将admin.example.com指向admin.example.com/index.php(与主站点相同),让php决定转到main/admin。有一次我尝试使用不同的前端控制器来管理,在各种尝试中,我要么在DOCROOT,要么在DOCROOT/admin。因此,最新版本只是试图将example.com和admin.example.com指向index.php,让index.php决定使用哪个主要的php应用程序代码,以及是否使用http basic auth。我不知道“没有空间”是从哪里来的。现在不是这样。我将发布当前的.htaccess。如果我想使用SetEnv方法,mod_env就会出现。根据phpinfo(),我认为mod_env没有到位。这是我正在尝试的当前.htaccess。据我所知,我没有创建这个文件。我只是想让管理部分正确设置。我最终做的是废弃整个.htaccess文件,重新开始。我不知道真正的问题是什么,但清除文件中所有的垃圾似乎解决了我的问题。我在这里的全部目标实际上只是拥有一个管理子域,并让它至少受到基本身份验证的保护。由于某些原因,我仍然在努力使用auth部分,但我相信我现在可以使用PHP触发basic auth,不管出于什么原因。还感谢@Arun的帮助。
admin.example.com/
指向文件系统中与
example.com/
相关的位置?“使用不同的index.php”-这可能是一个前端控制器?您希望路由到此备用前端控制器的URL是什么?你的.htaccess中有什么?通过在替换字符串中包含绝对URL,mod_rewrite将隐式触发外部重定向(而不是重写)。标志和替换参数之间没有空格(这将导致格式错误的重定向)。mod_env与此有什么关系?(mod_env应该已经可用了。)该网站已经建立并运行了10年,但我想做的事情之一是创建一个更好的目录结构。现在有一个主应用程序和一个管理应用程序位于DOCROOT之上,与同一共享主机帐户上的其他域处于同一级别,这感觉不太对。除此之外,即使您单击“取消”,auth也会允许用户进入,这是另一个问题。所以我尝试了各种排列方式,但目前我试图将admin.example.com指向admin.example.com/index.php(与主站点相同),让php决定转到main/admin。有一次我尝试使用不同的前端控制器来管理,在各种尝试中,我要么在DOCROOT,要么在DOCROOT/admin。因此,最新版本只是试图将example.com和admin.example.com指向index.php,让index.php决定使用哪个主要的php应用程序代码,以及是否使用http basic auth。我不知道“没有空间”是从哪里来的。现在不是这样。我将发布当前的.htaccess。如果我想使用SetEnv方法,mod_env就会出现。根据phpinfo(),我认为mod_env没有到位。这是我正在尝试的当前.htaccess。据我所知,我没有创建这个文件。我只是想让管理部分正确设置。我最终做的是废弃整个.htaccess文件,重新开始。我不知道真正的问题是什么,但清除文件中所有的垃圾似乎解决了我的问题。我在这里的全部目标实际上只是拥有一个管理子域,并让它至少受到基本身份验证的保护。由于某些原因,我仍然在努力使用auth部分,但我相信我现在可以使用PHP触发basic auth,不管出于什么原因。也感谢@Arun的帮助。