没有 URL 重写的 CakePHP:将 / 重定向到 index.php

Posted

技术标签:

【中文标题】没有 URL 重写的 CakePHP:将 / 重定向到 index.php【英文标题】:CakePHP without URL rewriting: redirect / to index.php 【发布时间】:2014-09-16 23:16:53 【问题描述】:

我在共享主机上使用 Cakephp 框架,无法打开 URL rewriting。 安装位于名为/tc 的文件夹中。当我打开 /tc/index.php/Controller/Action 时一切正常。

但是,我想让我的用户更轻松一点,这样他们就不必打开 /tc/index.php 而只需打开 /tc(然后应该重定向到 /tc/index.php)。

如何使用.htaccess 做到这一点?

谢谢!

澄清 我希望 /tc/ 上的请求被重定向到 /tc/index.php

解决方案

用一个简单的方法为我工作

RewriteEngine On
RewriteRule ^$ index.php/$1 [L,QSA]

CakePHP 处理其余部分,因为所有链接都指向 /tc/index.php/Controller。

感谢您的帮助!

【问题讨论】:

你为什么不联系他们打开它或者找一个普通的共享主机? 它确实有效,但是当我从外部站点通过 https 调用控制器时,由于一些问题,我无法使用 URL 重写。这仅在 URL 重写关闭时有效 =) 【参考方案1】:

尝试在.htaccess中使用以下代码

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %REQUEST_FILENAME !-f
   RewriteCond %REQUEST_FILENAME !-d
   RewriteRule ^(.*)$ index.php/$1 [L]
   IndexIgnore *
</IfModule>

【讨论】:

【参考方案2】:

试试这个:

1) 从 apache 服务器打开“mod_rewrite”。

2) 注释“Configure::write('App.baseUrl', env('SCRIPT_NAME'));”这行来自/confige/core.php

【讨论】:

这是一个共享主机,我无权做 apache conf。正如我所说,我不能使用 URL 重写。【参考方案3】:

以下是 .htaccess 的规则,您可以通过该规则从 URL 中删除 index.php,这意味着如果有人输入 http://example.com/index.php,它将重定向到 http://example.com/。

RewriteCond %THE_REQUEST ^[A-Z]3,9 /([^/]+/)*index.php HTTP/
RewriteRule ^(([^/]+/)*)index.php$ http://www.%HTTP_HOST/ [R=301,NS,L]

以上是您可以将 index.php 重定向到根目录的两个规则。

【讨论】:

谢谢。但我想反过来:如果 /tc 被调用,重定向到 /tc/index.php

以上是关于没有 URL 重写的 CakePHP:将 / 重定向到 index.php的主要内容,如果未能解决你的问题,请参考以下文章

cakephp 在 Ubuntu 上无法进行 url 重写

关于Servlet中的转发和重定项

CakePHP HTML Helper添加前缀URL

如何将 URL 编码为 CakePHP 参数

cakephp重写配置

Letsencrypt和CakePHP应用程序的Htaccess重写文件