Php 路由可以在本地主机上工作,但不能在实时服务器上工作
当我像这样在MAMP上访问我的站点时,效果非常好 localhost/site/about-us/ 当我把它上传到我的远程服务器上,然后像这样访问它 所有请求都返回到Php 路由可以在本地主机上工作,但不能在实时服务器上工作,php,routes,kohana,kohana-3,bootstrapping,Php,Routes,Kohana,Kohana 3,Bootstrapping,当我像这样在MAMP上访问我的站点时,效果非常好 localhost/site/about-us/ 当我把它上传到我的远程服务器上,然后像这样访问它 所有请求都返回到bootstrap.php中设置的“默认值” 这是我的路线设置 Route::set('default', '(<page>)') ->defaults(array( 'page' => 'home', 'controller' => 'page',
bootstrap.php
中设置的“默认值”
这是我的路线设置
Route::set('default', '(<page>)')
->defaults(array(
'page' => 'home',
'controller' => 'page',
'action' => 'index',
));
Route::set('default','()'))
->默认值(数组)(
“页面”=>“主页”,
“控制器”=>“页面”,
“操作”=>“索引”,
));
问题是,无论何时上传到我的服务器,任何像/about-us/这样的请求都会按照设置路由时指定的默认设置为home。如果我将默认设置更改为“关于我们”,则每个页面都会转到“关于我们”
有人知道这可能是什么原因吗?谢谢
更新
这里有一个黑客,工作,但肯定是丑陋的地狱。但我还是想知道为什么它不能按预期工作
// Hack because I can not get it to go to anything except 'default' below...
$uri = $_SERVER['REQUEST_URI'];
$uri = str_replace(url::base(), '', $uri);
$page = trim($uri, '/');
if ( ! $page) $page = 'home';
Route::set('default', '(<page>)')
->defaults(array(
'page' => $page,
'controller' => 'page',
'action' => 'index',
));
//Hack,因为我无法让它转到除下面的“default”之外的任何位置。。。
$uri=$\u服务器['REQUEST\u uri'];
$uri=str_replace(url::base(),“”,$uri);
$page=trim($uri,“/”);
如果(!$page)$page='home';
路由::集合('默认','()')
->默认值(数组)(
“页面”=>$page,
“控制器”=>“页面”,
“操作”=>“索引”,
));
您是否将$page误认为$action
如果我试试这个,效果很好。以下是我的控制器操作方法:
public function action_index($page = NULL)
{
var_dump($page);
}
如果我浏览到
localhost/site/blup
我看到一个漂亮的女孩
string(4) "blup"
被呼应。我的默认路由设置与您的相同。您是否将$page误认为$action 如果我试试这个,效果很好。以下是我的控制器操作方法:
public function action_index($page = NULL)
{
var_dump($page);
}
如果我浏览到
localhost/site/blup
我看到一个漂亮的女孩
string(4) "blup"
被呼应。我的默认路由设置与您的相同。您的代码基本上是一个全覆盖路由(它与所有请求都匹配)。你应该这样限制它
Route::set('static', '(<page>)', array('page' => 'about-us'))
->defaults(array(
'controller' => 'page',
'action' => 'index',
));
Route::set('static','()',array('page'=>'about us'))
->默认值(数组)(
“控制器”=>“页面”,
“操作”=>“索引”,
));
第三个参数是一个正则表达式,用于定义路由应匹配的内容
该路由将正则表达式中匹配的所有内容路由到页面控制器及其索引操作
然后可以使用
$page=$this->request->param('page')代码>在您的操作中。您的代码基本上是一个包罗万象的路线(它与所有请求都匹配)。你应该这样限制它
Route::set('static', '(<page>)', array('page' => 'about-us'))
->defaults(array(
'controller' => 'page',
'action' => 'index',
));
Route::set('static','()',array('page'=>'about us'))
->默认值(数组)(
“控制器”=>“页面”,
“操作”=>“索引”,
));
第三个参数是一个正则表达式,用于定义路由应匹配的内容
该路由将正则表达式中匹配的所有内容路由到页面控制器及其索引操作
然后可以使用$page=$this->request->param('page')代码>在您的操作中。听起来Kohana对URL的自动检测对您的服务器设置不起作用。。。它在哪个web服务器上出现故障
您可以更改Request::instance()->execute()。。。引导程序中要开始的行:
请求::实例($\u服务器['Request\u URI'])->执行()
这将确保它使用正确的URI
话虽如此。。。正如Pixel开发者所说,您的路线看起来。。古怪的对我来说;)
但是——因为它在MAMP上工作——路线可能不是问题所在 听起来Kohana对URL的自动检测对您的服务器设置不起作用。。。它在哪个web服务器上出现故障
您可以更改Request::instance()->execute()。。。引导程序中要开始的行:
请求::实例($\u服务器['Request\u URI'])->执行()
这将确保它使用正确的URI
话虽如此。。。正如Pixel开发者所说,您的路线看起来。。古怪的对我来说;)
但是——因为它在MAMP上工作——路线可能不是问题所在 谢谢大家!!我在文档中找不到这样的描述。非常感谢。非常感谢。非常感谢。非常感谢。我在文档中找不到这样的描述。非常感谢。非常感谢。非常感谢。