.htaccess不能满足我对CakePHP的需求

时间:2012-05-01 21:50:59

标签: .htaccess cakephp routing

Web服务器上有/ localhost / domains / localhost / myCakephpApp。我无法对文件夹结构做任何事情,但我可以在/ localhost /中编辑.htaccess,现在简化为:

RewriteRule (.*) /domains/localhost/$1 [L]

我在localhost / domains / localhost / myCakephpApp中的网站有标准的蛋糕.htaccess文件:

RewriteRule    ^$ app/webroot/    [L]
RewriteRule    (.*) app/webroot/$1 [L]

http://localhost/whatever/很有用,但是cakephp中的所有链接(使用html帮助程序)都指向http://localhost/domains/localhost/whatever/并且可以访问。

如何才能使网站仅在http://localhost/而非http://localhost/domains/localhost/上投放?

编辑:

好的,我修改了根目录中的.htaccess(http:// localhost /):

RewriteRule ^$ /domains/localhost/app/webroot/ [L]
RewriteRule (.*) /domains/localhost/app/webroot/$1 [L]

并在http://localhost/domains/localhost/中删除了一个,这意味着只能从http://localhost访问该网址,但链接仍然指向http://localhost/domains/localhost/whatever(e404)

蛋糕的路由中有什么东西像“基本网址”吗?我搜索了很多,但没有任何效果。

2 个答案:

答案 0 :(得分:0)

您可以添加重定向路线:

Router::redirect('/domains/myDomainName.com/*', '/');

如果要完全禁用路线,可以重定向到404页面。这样的事情应该有效:

Router::redirect('/domains/myDomainName.com/*', array('controller'=>'pages', 'action'=>'error-404'), array('status' => '404')); 

在/View/Pages/error-404.ctp中添加404页。

答案 1 :(得分:0)

问题是CakePHP使用来自服务器的原始uri来解决操作,而不是重写的操作!

在bootstrap.php中尝试这个“hack”:

Configure::write('App.base', '/');
$_SERVER['REQUEST_URI'] = preg_replace('|/domains/localhost|', '', $_SERVER['REQUEST_URI']);