一段时间以来,我一直在拔头发。我想知道是否可以使用.htaccess创建动态子域?我目前处于沙盒环境中,但我希望这样做:
awebsite.co.uk->直接访问index.php * .awebsite.co.uk->直接访问init.php
到目前为止,我已经设法将其整理并完成,但是,在参数方面我面临一个真正的问题。
*。adomain.co.uk/page会抛出404或500。我通过将一个自定义404设置为init.php来实现它的目的
我的问题是我有一条规则要从URL中隐藏.php,因此adomain.co.uk/apage将显示page.php,但是当我尝试完成上述操作时,这会弄乱。有人可以在这里向我指出正确的方向吗?我有通配符A记录等。但是我无法与托管服务提供商设置ServerAlias。
非常感谢
更新: .htaccess(当前)
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
ErrorDocument 404 /sandbox/init.php
使用PHP进行操作应该很容易
$splitDomain = explode('.', $_SERVER['SERVER_NAME']);
// TODO: remove if not sandbox
$ReqPage = str_replace('/sandbox/', '', $_SERVER['REQUEST_URI']);
//$ReqPage = str_replace('/', '', $_SERVER['REQUEST_URI']);
答案 0 :(得分:1)
默认行为是重定向到index.php,因此您只需要捕获非www子域即可。
怎么样:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.example\.com$ [NC]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^ http://www.example.com/init.php [L,R]
或者:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.example\.com$ [NC]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^ init.php [L]
第一个将重定向到init.php(您的要求),第二个将不进行重定向(您的意思是)调用init.php。