php - Cakephp - 大写的 URL 生成重复的内容,重定向到小写
问题描述
我正在使用 Cakephp 2.x,我正在尝试将包含大写的 URL 重定向到小写。为了提供有关技术部分的更多信息,它是一个字典,它接受一个参数(字母或单词),然后在数据库中进行搜索,并根据用户的搜索,显示一定的结果。
到目前为止,我所做的是这段代码,以便能够重定向那些用户(比如说,通过他/她自己的判断或错误输入大写字母)的 URL。在这种情况下,直接在插入大写字母时,结果或单词必须自动重定向为小写。
'''
public function comprobar_param($param, $letter = NULL) {
$param_is_letter = false;
$param_is_capital_letter = false;
$categorias_diccionario = 'abcdefghijklmnopqrstuvwxyz';
if(strlen($param) > 0) {
// If it is a lowercase letter
$pos_lowercase = strpos($categorias_diccionario, $param);
$pos_lowercase !== false ? true : false;
$param_is_letter = $pos_lowercase;
$pos_uppercase = preg_match("/[A-Z]/", $param);
//if the letter is a capital letter
$param_is_capital_letter = !$param_is_letter && $pos_uppercase;
}
if(empty($this->request->query)){
$params_url_str = '';
} else {
$params_url_str = '?' . http_build_query($this->request->query);
}
if($param_is_capital_letter === true) {
$this->redirect('/' . DICCIONARIO_MEDICO_URL . '/' . strtolower($param). $params_url_str, 301);
} elseif($param_is_letter === false) {
if($letter != NULL) {
$this->redirect('/' . DICCIONARIO_MEDICO_URL . '/' . $param . $params_url_str, 301);
} else {
$this->cacheAction = array(
'comprobar_param' => '1 year'
);
$this->view(null, $param);
$this->render('view');
}
// if we are on the list with lowercase
} else {
// if the url doesn't end in slash, we redirect the URL with slash at the end
if(substr($this->params->url, -1) != '/') {
$this->redirect('/' . DICCIONARIO_MEDICO_URL . '/' . strtolower($param) . '/' . $params_url_str, 301);
return;
}
}
'''
因此,我在 routes.php 文件中使用的路由将是下一个:
Router::connect('/'.DICCIONARIO_MEDICO_URL . '/:param', array('controller' => 'treatments', 'action' => 'comprobar_param'), array('pass' => array('param' => '')));
此时,我可以在本地服务器上进行重定向,但是当我尝试在我的开发服务器上对其进行测试时,重定向功能失败了。我将指出一个示例,以便您了解我想要实现的目标: http://topdoctors.local/diccionario-medico/Aborto => http://topdoctors.local/diccionario-medico/Aborto
任何建议都会受到欢迎。谢谢。
解决方案
推荐阅读
- java - 在 Java Eclipse 中使用命令行提示符
- sql - 获取1个表的所有行加入
- httprequest - Telepot 中的 bot.sendAudio 和 bot.sendPhoto 方法返回 { 'error code' : 400 , 'Bad Request: wrong HTTP URL specified'}
- javascript - TypeError:未定义不是对象评估('_useContext.add_location')
- reactjs - 具有 Auth0 和 Redux 的 NextJS 应用程序无法在手动刷新时检索 Auth 会话
- php - 日期变量在 php 中不能正常工作?
- excel - 匹配来自两个来源的数据和excel中的简单计算
- c# - 如何在同一查询 linq 中使用 Where、Group By、Select 和 OrderBy?
- process - 下面的代码优先考虑修改共享变量的第一个孩子。如何消除此错误?
- javascript - 高度变化关闭侧边栏