Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是CakePHP';是什么使我的.htaccess 301重定向出错?_Php_Apache_.htaccess_Cakephp - Fatal编程技术网

是CakePHP';是什么使我的.htaccess 301重定向出错?

是CakePHP';是什么使我的.htaccess 301重定向出错?,php,apache,.htaccess,cakephp,Php,Apache,.htaccess,Cakephp,我刚刚将一个站点迁移到一个更新版本,但是我想为该站点的一些最常见的入口页面设置301重定向 下面是我添加到.htaccess的规则: Redirect 301 /oldhomepage.htm http://www.thesite.com/ 它有点工作,但它重定向到 http://www.thesite.com/?url=oldhomepage.htm 这与CakePHP路由设置有冲突吗 编辑:有人指出这可能是一个.htaccess冲突,事实确实如此。CakePHP自动创建一个.htacces

我刚刚将一个站点迁移到一个更新版本,但是我想为该站点的一些最常见的入口页面设置301重定向

下面是我添加到.htaccess的规则:

Redirect 301 /oldhomepage.htm http://www.thesite.com/
它有点工作,但它重定向到

http://www.thesite.com/?url=oldhomepage.htm

这与CakePHP路由设置有冲突吗

编辑:有人指出这可能是一个.htaccess冲突,事实确实如此。CakePHP自动创建一个.htaccess文件(位于子目录中),该文件具有以下内容:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

重新启动发动机
重写基/
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^(.*)$index.php?url=$1[QSA,L]

有没有什么方法可以让我轻松地做到两全其美,实现简单的每页301重定向,同时保持CakePHP的路由?

为什么不使用
$this->redirect(http://www.thesite.com/', 301);在控制器中?

如果所有旧URL均以
.htm
结尾,而新URL均以
结尾,则可以按如下方式编辑CakePHP
.htaccess
文件:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.htm$
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

在我看来,这更像是您的
.htaccess
文件中的一个问题,但如果不看到整个过程,很难判断。如果是这样,可能与我在回答中描述的情况类似:我添加了一个更新。。。基于你的评论,我看得更近了,所以谢谢。如果可以的话,我完全可以从cakePHP路由器上完成,但你可能误解了我的意图。在客户的旧站点中,他们有一些URL,如site.com/main.htm。在新网站上,我没有main.htm,所以我想确保指向main.htm的链接(特别是谷歌链接)被优雅地重定向到新主页上。事实上,新的url都没有。我是否结合使用:重定向301/oldhomepage.htm?是的。此修改将阻止
?url=oldhomepage.htm
,这样您就可以保持原始文件不变,并且这些重定向将正常工作。