Kohana 3:隐藏部分 f "=10="
Kohana 3: Hide part of url
我在 Kohana 3 中隐藏部分 url 时遇到问题。
admin 子文件夹中存储了控制器。
这些控制器为站点的管理面板供电。
所以当我输入 :
http://mysite.xyz/admin
它工作正常。我只需要那个 kohana 项目的管理面板,我决定创建子域 admin
.
所以现在当我输入时:
http://admin.mysite.xyz/admin
它工作正常。
但我想隐藏 url 的 admin
部分以及我何时输入:
http://admin.mysite.xyz
我不会加载 kohana 站点,但会加载管理面板。
这是我的 .htaccess:
RewriteEngine On
RewriteBase /
###### Add trailing slash (optional) ######
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [L,R=301,NE]
RewriteCond %{REQUEST_METHOD} !POST
RewriteRule ^(.*)index.php/(.*)$ / [R=301,L,NE]
RewriteCond ^(index\.php|robots\.txt|favicon\.ico|media)
RewriteRule ^(?:application|modules|system)\b.* index.php/[=11=] [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?kohana_uri= [L,QSA]
RewriteCond %{HTTP_HOST} ^(www.)?admin.schoener-tauchen.pl$
RewriteRule ^(/)?$ admin [L]
RewriteRule ^admin/(.+)$ [L,NC,R]
不行。它给出 404 错误。
有人可以帮忙吗?
PS. 不幸的是,在这种情况下更改 Kohana 路由非常复杂。 Htaccess 的更改似乎更容易。
编辑
bootstrap.php 路线:
Route::set('admin', 'admin(/<controller>(,<action>(,<id>)(,<id2>)(,<id3>)))')
->defaults(array(
'directory' => 'admin',
'controller' => 'home',
'action' => 'index',
));
Route::set('default', '(<controller>(,<action>(,<id>)))', array('controller'=>'\w+','controller'=>'\w+', 'action'=>'\w+', 'param' => '.+'))
->defaults(array(
'directory' => 'admin',
'controller' => 'home',
'action' => 'index',
));
使用bootstrap.php
$is_admin = preg_match('/^admin\.schoener-tauchen\.pl$/', $_SERVER['HTTP_HOST']);
Route::set('default', '(<action>(/<id>))')
->defaults(array(
'controller' => $is_admin ? 'admin' : 'index',
'action' => 'index',
));
并从 .htaccess 中删除
RewriteCond %{HTTP_HOST} ^(www.)?admin.schoener-tauchen.pl$
RewriteRule ^(/)?$ admin [L]
RewriteRule ^admin/(.+)$ [L,NC,R]
我会建议这个解决方案,注释掉 bootstrap 中的两条路线并用这个替换它们。
Kohana::init ( array (
'base_url' => '/'
));
Route::set('default', '(<controller>(,<action>(,<id>)(,<id2>)(,<id3>)))')
->defaults(array(
'directory' => 'admin',
'controller' => 'home',
'action' => 'index',
));
好的。我通过 .htaccess:
中的 hack 解决了它
RewriteRule ^admin/(.+)$ [L,NC,R]
在视图的文件和控制器中有包含 admin
的链接和 URL。 Htaccess 强制它跳过 admin
部分。
我在 Kohana 3 中隐藏部分 url 时遇到问题。
admin 子文件夹中存储了控制器。 这些控制器为站点的管理面板供电。 所以当我输入 :
http://mysite.xyz/admin
它工作正常。我只需要那个 kohana 项目的管理面板,我决定创建子域 admin
.
所以现在当我输入时:
http://admin.mysite.xyz/admin
它工作正常。
但我想隐藏 url 的 admin
部分以及我何时输入:
http://admin.mysite.xyz
我不会加载 kohana 站点,但会加载管理面板。
这是我的 .htaccess:
RewriteEngine On
RewriteBase /
###### Add trailing slash (optional) ######
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [L,R=301,NE]
RewriteCond %{REQUEST_METHOD} !POST
RewriteRule ^(.*)index.php/(.*)$ / [R=301,L,NE]
RewriteCond ^(index\.php|robots\.txt|favicon\.ico|media)
RewriteRule ^(?:application|modules|system)\b.* index.php/[=11=] [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?kohana_uri= [L,QSA]
RewriteCond %{HTTP_HOST} ^(www.)?admin.schoener-tauchen.pl$
RewriteRule ^(/)?$ admin [L]
RewriteRule ^admin/(.+)$ [L,NC,R]
不行。它给出 404 错误。
有人可以帮忙吗?
PS. 不幸的是,在这种情况下更改 Kohana 路由非常复杂。 Htaccess 的更改似乎更容易。
编辑
bootstrap.php 路线:
Route::set('admin', 'admin(/<controller>(,<action>(,<id>)(,<id2>)(,<id3>)))')
->defaults(array(
'directory' => 'admin',
'controller' => 'home',
'action' => 'index',
));
Route::set('default', '(<controller>(,<action>(,<id>)))', array('controller'=>'\w+','controller'=>'\w+', 'action'=>'\w+', 'param' => '.+'))
->defaults(array(
'directory' => 'admin',
'controller' => 'home',
'action' => 'index',
));
使用bootstrap.php
$is_admin = preg_match('/^admin\.schoener-tauchen\.pl$/', $_SERVER['HTTP_HOST']);
Route::set('default', '(<action>(/<id>))')
->defaults(array(
'controller' => $is_admin ? 'admin' : 'index',
'action' => 'index',
));
并从 .htaccess 中删除
RewriteCond %{HTTP_HOST} ^(www.)?admin.schoener-tauchen.pl$
RewriteRule ^(/)?$ admin [L]
RewriteRule ^admin/(.+)$ [L,NC,R]
我会建议这个解决方案,注释掉 bootstrap 中的两条路线并用这个替换它们。
Kohana::init ( array (
'base_url' => '/'
));
Route::set('default', '(<controller>(,<action>(,<id>)(,<id2>)(,<id3>)))')
->defaults(array(
'directory' => 'admin',
'controller' => 'home',
'action' => 'index',
));
好的。我通过 .htaccess:
中的 hack 解决了它RewriteRule ^admin/(.+)$ [L,NC,R]
在视图的文件和控制器中有包含 admin
的链接和 URL。 Htaccess 强制它跳过 admin
部分。