【问题标题】:CakePHP 3.x route 301 redirects of old links to new links with language modificationCakePHP 3.x 路由 301 将旧链接重定向到带有语言修改的新链接
【发布时间】:2020-10-19 11:49:51
【问题描述】:

我的问题与在 CakePHP 3.x 中创建通用路由重定向有关。

我曾经在我的网站中使用以下 URL 结构:

https://www...../controller/action?language=eng
https://www...../controller/action/slug?language=eng
https://www...../controller/action?language=pol
https://www...../controller/action/slug?language=pol
                                                

目前我的 URL 结构如下:

https://www...../en/controller/action
https://www...../en/controller/action/slug                                                   
https://www...../pl/controller/action
https://www...../pl/controller/action/slug

我应该如何创建 $routes->redirect 以便如果用户输入旧链接,他或她会自动重定向到新格式的正确语言页面?我有数百个页面,我不能为每个页面单独创建 $routes->redirect,因为它会做很多工作。

【问题讨论】:

  • 我更喜欢使用 CakePHP 重定向选项(在 routes.php 中)
  • 方法错误,不必要地浪费资源。你更喜欢 server->php->server->php,而不是 server->server->php
  • 您能否在我的示例中解释一下我应该如何更好地实现我需要的这种重定向功能?如果你的建议更好,我愿意接受。我是这方面的新手。
  • 您使用哪个服务器以及哪个版本?示例:Apache 2.4

标签: regex .htaccess mod-rewrite cakephp


【解决方案1】:

我会尝试将每种前缀语言嵌入到一个数组中,因此检查 $this->here 是否有 ?language= 在 slug 上。

根据哪种语言,我会使用 PHP 检查 strpos 是否某种语言构成插入的 URL 的一部分。

如果两个条件都为假,我继续并跳转到循环的下一次迭代。

最后,如果满足条件,我会按照我之前指出的那样重定向它。 我希望这能给你一个解决方案的提示。

干杯

 $lang = '?language=';
$slugArr = [$lang.'eng', $lang.'pol', $lang.'otherlang'];
foreach($slugArr as $slugName) {
    $pos = strpos($this->here, $slugName);
    $lang = strpos($this->here, 'eng') || strpos($this->here, 'pol');
    if($pos !== false && $lang !== false) {
        if($slugName === $lang.'eng') {
            Router::redirect('/controller/action?language=eng', '/en/controller/action/', array('status' => 301));
        } else if($slugName === $lanmg.'pol'){
            Router::redirect('/controller/action?language=pol', '/pol/controller/action/', array('status' => 301));
        }
    }else{
        continue;
    } 
}

【讨论】:

    猜你喜欢
    • 2016-02-11
    • 2021-10-14
    • 2014-05-21
    • 1970-01-01
    • 2019-11-06
    • 2012-04-18
    • 1970-01-01
    • 2012-09-28
    相关资源
    最近更新 更多