我正在使用 CodeIgniter 创建一个 PHP 应用程序,这个项目实际上有 3 个子应用程序,因此每个应用程序都有三个单独的索引文件。我打算为这些应用程序使用三个不同的子域。最后,该项目位于我的 Apache 文档根目录中的子目录下。
例如,这个用户 URL 应该映射到
http://app1.example.com/ABC -----> http://app1.example.com/ext/app1.php/ABC
http://app2.example.com/DEF -----> http://app2.example.com/ext/app2.php/DEF
http://app3.example.com/XYZ -----> http://app3.example.com/ext/app3.php/XYZ
还有其他应用程序,例如 app4 和 app5,我不想将规则应用于这些应用程序。
我以前使用并编写过重写规则,但它们相当简单,我无法破解这个规则。我在我的 .htaccess 中使用了以下内容,当我尝试访问让我们说 app1 时,url 变为 .htaccess http://app1.example.com/ext/app1.php/ext/app1.php/ext/app1.php/{manytimes}
。
所以它在一个循环中进行。
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^app1\.example\.com$
RewriteRule ^ http://app1.example.com/example/app1.php%{REQUEST_URI} [L]
RewriteCond %{HTTP_HOST} ^app2\.example\.com$
RewriteRule ^ http://app2.example.com/example/app2.php%{REQUEST_URI} [L]
RewriteCond %{HTTP_HOST} ^app3\.example\.com$
RewriteRule ^ http://app3.example.com/example/app3.php%{REQUEST_URI} [L]
所以真正的子域是 - api、viewer 和 studio,并且在它们的末尾没有真正的序列。
我最近的尝试是:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^(viewer|api|studio)\.example\.com$
RewriteRule ^/(.*)\.example\.com/(.*) http://$1.example.com/ext/$1.php/$2 [L]