在Cakephp的App / Webroot中路由到文件夹

时间:2011-08-24 10:12:39

标签: .htaccess cakephp mod-rewrite routes

我知道这个问题已经有几个问题了。我已经浏览过它们,不能让任何提议的解决方案对我有用......也许有人可以帮我解决我的具体问题?

我的app / webroot中有一个包含index.html和相关文件的文件夹parallax。这可以在/ parallax /中正常访问。但是,如果我尝试在/ parallax访问它,我会被重定向到/ app / webroot / parallax /,理想情况下我想抑制这种行为。

将整个事物重构为CakePHP控制器动作并不是我想要进入的理想事项(尽管它可能比我预期的更简单,请告诉我)。路由文件并不是我所知道允许路由到app / webroot中的文件。

另一个调用端口似乎是.htaccess文件。我尝试添加重写规则:

RewritRule ^parallax$ parallax/index.html

或其中的变体,但我能得到的最好的是一个图像损坏的页面(无论我最终如何,它似乎都无法在视差/图像子文件夹中找到图像)

任何人都可以清理我的困惑并帮助我找到/ parallax的最佳路径,并给出与/ parallax /相同的结果吗?

4 个答案:

答案 0 :(得分:1)

请在根目录中尝试以下.htaccess代码,而不是在app目录中。

<IfModule mod_rewrite.c>
   RewriteEngine on
   Rewriterule ^parallax/.*$ - [PT]
   RewriteRule ^$ app/webroot/    [L]
   RewriteRule (.*) app/webroot/$1 [L]
</IfModule>

这应该对你有所帮助。 .htaccess规则将跳过以视差开始请求的内容。剩下的事情将按原样运作。

答案 1 :(得分:1)

.htaccess root感谢Anh Pham对此链接的完美运作http://www.balistupa.com/blog/2010/08/how-to-redirect-appwebrootblog-into-blog-wordpress-cakephp/

<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} !^/foldername.*
RewriteCond %{REQUEST_URI} !-f
RewriteRule ^$ app/webroot/ [L]
RewriteCond %{REQUEST_URI} !^/foldername.*
RewriteCond %{REQUEST_URI} !-d
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>

答案 2 :(得分:0)

我试图重现这种情况,但它对我来说是正确的。我正在使用cakePhp 1.3并且两个网址都将我发送到index.html:

http://localhost:5013/parallax/
http://localhost:5013/parallax

我的猜测是你的.htaccess(位于/ app / webroot /的那个)有些奇怪。我的是:

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

基本上,它告诉服务器如果请求的url不是文件(!-f),也不是目录(!-d),它会将整个url重定向为/webroot/index.php的参数,所以cakephp将解析url并调用控制器以及所有这些..

希望这有帮助

答案 3 :(得分:0)

您应该能够在app / webroot文件夹中放置带有静态index.html的parallax文件夹,并且默认情况下可以在/ parallax / url中访问它。

如果您使用相对路径,您甚至可以将img / css用于该文件夹的本地页面,并完全跳过通常的cakephp路径。不需要htaccess。

相关问题