使用Kohana PHP框架的URL中的连字符
这是一个Apache.htaccess问题 在Kohana PHP Framework中(我使用的是3.1),它们似乎不支持控制器或操作的URL中的连字符,这是域后的前2个URL参数,如: 或 是否有一种方法可以生成.htaccess文件,以便可以从控制器和操作插槽中去掉连字符(破折号),但不能从其他插槽中去掉?这是我当前的.htaccess文件:使用Kohana PHP框架的URL中的连字符,php,.htaccess,frameworks,apache2,kohana,Php,.htaccess,Frameworks,Apache2,Kohana,这是一个Apache.htaccess问题 在Kohana PHP Framework中(我使用的是3.1),它们似乎不支持控制器或操作的URL中的连字符,这是域后的前2个URL参数,如: 或 是否有一种方法可以生成.htaccess文件,以便可以从控制器和操作插槽中去掉连字符(破折号),但不能从其他插槽中去掉?这是我当前的.htaccess文件: Options All +FollowSymLinks -Indexes -Multiviews # Turn on URL rewritin
Options All +FollowSymLinks -Indexes -Multiviews
# Turn on URL rewriting
RewriteEngine On
# Installation directory
RewriteBase /
# Protect hidden files from being viewed
<Files .*>
Order Deny,Allow
Deny From All
</Files>
RewriteRule ^assets/(.*)$ application/views/assets/$1
RewriteCond %{REQUEST_FILENAME} !/application/views/assets/.*
# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]
Options All+FollowSymLinks-索引-多视图
#启用URL重写
重新启动发动机
#安装目录
重写基/
#保护隐藏文件不被查看
命令拒绝,允许
全盘否定
重写规则^assets/(.*)$application/views/assets/$1
重写cond%{REQUEST_FILENAME}/应用程序/视图/资产/*
#保护应用程序和系统文件不被查看
重写规则^(?:应用程序|模块|系统)\b.*index.php/$0[L]
#允许直接显示现有的任何文件或目录
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
#将所有其他URL重写为index.php/URL
重写规则。*index.php/$0[PT]
在我的项目的Kohana 3.1的boostrap.php中,我必须在默认路径上方添加以下内容:
Route::set(
'custom',
function($uri) {
$uri = rtrim($uri, '/');
$asParts = @ explode('/',$uri);
$controller = @ $asParts[0];
$action = @ $asParts[1];
$param1 = @ $asParts[2];
$param2 = @ $asParts[3];
$param3 = @ $asParts[4];
$controller = str_replace('-','_',$controller);
$action = str_replace('-','_',$action);
$controller = (empty($controller)) ? 'home' : $controller;
$action = (empty($action)) ? 'index' : $action;
return array(
'controller' => $controller,
'action' => $action,
'param1' => $param1,
'param2' => $param2,
'param3' => $param3
);
}
);
这让我可以做以下事情:
- 动作中的破折号将成为控制器类中带有下划线的函数。因此,“addnew”变成了“action_add_new()”
- 控制器中的破折号变为子文件夹,因为控制器在kohana中自然下划线表示子文件夹。因此,由于上面控制器上的str_replace()函数,如果我有一个“test1-test2”控制器,Kohana会查找控制器文件夹“test1”,然后查找控制器文件“test2.php”。但关键是,test2.php需要以“类控制器\u Test1\u test2扩展控制器{”开头
- 然后,我还能够在URL之后传递3个SEO友好参数,而不必使用更难看的?p1=blah&p2=blah&p3=blah查询参数技术。这是