我将域名作为example.dev,我想将其重定向到laravel 5中的www.example.dev。在本地环境中,我将虚拟主机设置为example.dev,并将其别名设置为www.example.dev。
laravel 5上的.htaccess文件看起来像这样。
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
RewriteBase "/"
我在laravel中的路由文件看起来像这样。
Route::group(array('domain' => 'example.dev'), function()
{
Route::get('/', function() {
return "I'm root!";
});
});
Route::group(array('domain' => '{sub}.example.dev'), function()
{
Route::get('/', function($sub) {
return "I'm ".$sub." subdomain";
});
});
现在,如果我访问example.dev,我会输出
我是root
如果我访问something.example.dev,我会
我是子域名
如果我访问www.example.dev,我会得到这个......
我是www子域名
我能想到的是用 www 定义另一个自定义域组,但这不是很好,我相信或不是很好的做法。我在.htaccess文件中尝试了一些修改,如下所示 RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301]
现在,如果我访问example.dev,它重定向在www.example.dev但输出仍然是
我是www子域名
然后我将我的第一个路由组从example.dev更改为www.example.dev并且工作了!但我只是需要知道这是否是正确的方法?或者使用多个子域的组是唯一的方法吗?你知道从数据库通过控制器检查子域名的任何简单和最好的方法,所以我将检查它是否存在子域然后用它的视图服务,否则传递未找到错误。我知道某处可以使用过滤器并使用之前,但不完全确切!
帮助真的很感激。 谢谢:)
答案 0 :(得分:1)
Route::group(array('domain' => '{sub}.example.dev'), function($sub)
{
if($sub == 'www' || $sub == ''){
Route::get('/',function(){
return "I'm root!";
});
}
else{
Route::get('/', function($sub) {
return "I'm ".$sub." subdomain";
});
}
});