我想要实现的是以下apache mod_rewrite:
网址 - >映射到文件:
*.example.com/**/* -> index.php/$1/$2
例如:
portal.example.com/ -> index.php/portal
portal.example.com/agb -> index.php/portal/agb
admin.example.com -> index.php/admin
admin.example.com/my/cool/subfolder -> index.php/admin/my/cool/subfolder
我怎样才能达到这个目标?也许是RewriteCond的东西?
答案 0 :(得分:2)
首先,确保所有子域都指向同一主机(通配符)。这通常在Apache主机的配置文件中完成。
<VirtualHost *:80>
ServerName example.com
ServerAlias *.example.com
...
然后,您应该获得所需的重定向以使用以下配置:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.example\.com
RewriteRule ^(.*)$ http://example.com/index.php/%1/$1 [L,NC,QSA]
参考: Redirect wildcard subdomains to subdirectory, without changing URL in address bar
更新1:
以下是多个通配符方案的更新。请注意,我更改了最后一行 - 我显式调用了基本URL的index.php,这样$ _SERVER [&#39; PHP_SELF&#39;]的输出应为/index.php/portal/index.html(或根据你的Apache配置的PHP。)
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^(.*)\.(.*)\.(.*)$
RewriteRule ^(.*)/?$ http://%2.%3/index.php/%1/$1 [L,NC,QSA]