在CakePHP中路由静态文件夹名称

tra*_*nte 2 php redirect routing cakephp cakephp-2.0

我在浏览器中试过这个:

http://example.com/contact
Run Code Online (Sandbox Code Playgroud)

但后来我得到" 无法找到Controller类ContactController "错误

它不存在,因为"contact"是一个不属于CakePHP应用程序的文件夹名称.它里面有2个php文件,但它们可以独立运行.它们不是CakePHP应用程序文件.

我试过这个:

Router::redirect('/contact/*', 'http://example.com/contact/',
    array('status' => 302));
Run Code Online (Sandbox Code Playgroud)

但我从浏览器" 这个网页有一个重定向循环 " 得到这个错误

如何进行重定向以便我不会收到此错误?

Eve*_*ani 5

可以添加mod_rewrite规则.

假设您的应用路径是:

/var/www/
/var/www/app
/var/www/app/webroot
Run Code Online (Sandbox Code Playgroud)

将您的文件夹"contact"添加到

/var/www/contact
Run Code Online (Sandbox Code Playgroud)

找到CakePHP .htaccess at

/var/www/.htaccess
Run Code Online (Sandbox Code Playgroud)

这是原始内容:

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

在"RewriteEngine on"行之后添加规则

RewriteRule  ^contact -               [L]
Run Code Online (Sandbox Code Playgroud)

它看起来像这样

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule  ^contact -           [L]
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)