2

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

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

我在 localhost/domains/localhost/myCakephpApp 中的网站有标准的 cake .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)

蛋糕的路由中是否有诸如“基本网址”之类的东西?我搜索了很多,但没有任何效果。

4

2 回答 2

0

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

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

Configure::write('App.base', '/');
$_SERVER['REQUEST_URI'] = preg_replace('|/domains/localhost|', '', $_SERVER['REQUEST_URI']);
于 2012-10-11T20:55:46.883 回答
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 页。

于 2012-05-02T18:33:17.357 回答