【问题标题】:MVC htaccess redirect rule if page does not exist如果页面不存在,则 MVC htaccess 重定向规则
【发布时间】:2015-12-16 23:27:31
【问题描述】:

我有几个网址,例如
http://sitename.com/recipes/234
//sitename.com/recipes/235
//sitename.com/recipes/236

URL 路由是这样设置的:
//sitename.com/controller/action/ID

我需要编写一个 htaccess 规则,该规则将执行 301 重定向到
http://sitename.com/recipes
如果该项目不存在并且 cake 抛出 404 错误

我已经在核心 PHP 中尝试过,它运行良好。但我发现很难在 MVC 环境中做同样的事情。我想在 cakephp 框架上实现它。

我尝试使用以下代码

RewriteCond  %{REQUEST_FILENAME} !-f
RewriteCond  %{REQUEST_FILENAME} !-d
RewriteRule  ^(.*)$ index.php?request=$1 [L]

【问题讨论】:

  • 你用的是什么框架?从标签上看不清楚。
  • 我想在 cakephp 框架上实现。
  • 配方是否存在应该由您的应用而不是 .htaccess 处理,因此您的重定向需要在应用的控制器中处理。您是如何设置路线的?
  • 是的,我完全理解这一点。但我需要知道是否可以通过 htaccess 文件进行操作。我需要将其重定向到 /recipes 页面,而不是显示 404 状态代码。
  • 它根本无法通过.htaccess 完成(仅),Apache 环境不知道您的数据库中存在什么,或者不存在什么,这个问题必须在不同的级别上解决,例如 PHP。 stackoverflow.com/questions/7956072/…

标签: .htaccess cakephp mod-rewrite model-view-controller cakephp-2.3


【解决方案1】:

对于 MVC,例如,在您的 Recipes 控制器视图方法中,您可以使用以下代码:

public function view($id = null)
{
    // ....

    $recipe = $this->Recipe->findById($id);

    if (!$recipe) {
        // Not found flash error message
        return $this->redirect(
            array('action' => 'index'),// -> Recipes index page
            301
        );
    }

    // ....
}

请参阅文档here

【讨论】:

  • 嗨,就像我说的,我不想对控制器或路由进行任何更改。我需要知道这是否可以通过 htaccess 规则来完成。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-25
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多