Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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
.htaccess 路由到Cakephp中的文件夹';s应用程序/Webroot_.htaccess_Cakephp_Mod Rewrite_Routes - Fatal编程技术网

.htaccess 路由到Cakephp中的文件夹';s应用程序/Webroot

.htaccess 路由到Cakephp中的文件夹';s应用程序/Webroot,.htaccess,cakephp,mod-rewrite,routes,.htaccess,Cakephp,Mod Rewrite,Routes,我知道在这个问题上已经有一些问题了。我已经仔细研究了它们,但无法使任何建议的解决方案对我有效。。。也许有人能帮我解决具体问题 我的app/webroot中有一个文件夹parallax,其中包含index.html和相关文件。这可以在/parallax/处很好地访问。但是,如果我尝试在/parallax访问它,我会被重定向到/app/webroot/parallax/,理想情况下,我希望抑制这种行为 将整个事情重构为CakePHP控制器操作并不是我理想中想要做的事情(尽管如果它可能比我预期的要简单

我知道在这个问题上已经有一些问题了。我已经仔细研究了它们,但无法使任何建议的解决方案对我有效。。。也许有人能帮我解决具体问题

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

将整个事情重构为CakePHP控制器操作并不是我理想中想要做的事情(尽管如果它可能比我预期的要简单,请告诉我)。据我所知,路由文件不允许路由到app/webroot中的文件

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

RewritRule ^parallax$ parallax/index.html
或者其变体,但我在这里能得到的最好的是一个有破碎图像的页面(无论我最终得到什么,它似乎不再能够在“视差/图像”子文件夹中找到图像)


有谁能帮我澄清我的困惑,并帮我找到与/parallax/效果相同的/parallax的最佳路径吗?

我试图重现这种情况,但对我来说效果很好。我使用的是cakePhp 1.3,两个URL都将我发送到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>

重新启动发动机
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^(.*)$index.php?url=$1[QSA,L]
基本上,它告诉服务器,如果请求的url不是文件(!-f)或目录(!-d),它会将整个url作为参数重定向到/webroot/index.php,因此cakephp将解析url并调用控制器等等


希望这有帮助

请尝试下面的.htaccess代码,它位于根目录中,而不是应用目录中

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

重新启动发动机
重写规则^视差/*$-[PT]
重写规则^$app/webroot/[L]
重写规则(*)app/webroot/$1[L]

这应该对你有帮助。.htaccess规则将跳过以视差开头的任何请求。其余的事情都会照常进行。

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


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

.htaccess根目录感谢Anh Pham提供的此链接,它可以完美地工作


重写cond%{REQUEST_URI}^/foldername*
重写cond%{REQUEST_URI}-F
重写规则^$app/webroot/[L]
重写cond%{REQUEST_URI}^/foldername*
重写cond%{REQUEST_URI}-D
重写规则(*)app/webroot/$1[L]

我不确定视差是什么,但也许它可以通过pages控制器进入你的应用程序?@Dunhamzzz好的,但这不需要将整个过程重新设计为视图和控制器动作,将所有图像和js文件移动到新家等吗?这显然需要一点时间和精力,我只是想知道你是否可以将一个包含html、图像和javascript文件的文件夹放到app/webroot中,以一种轻松的方式访问它,而不必每次都完全重构成CakePHP。我是否以某种可怕的方式漏掉了要点?一点也不,这取决于文件有多复杂。看看是否有人会帮你。@Dunhamzzz好的,页面控制器看起来很有趣,可能很有用。问题是,如果我将视差的内容转储到视图/页面中,我仍然有一堆图像和js文件,它们现在无法正确链接,需要处理。可能是我进一步探索的途径。嗯,我的webroot.htaccess确实包含所有这些行,所以有人在RewriteEngine On和第一个RewriteCond之间添加了一系列其他重写规则(用于非常特定的路径)。我不知道在康德之前制定规则是否会把事情搞砸?在任何一种情况下,在这里添加一个视差大于秒的重写规则似乎可以将视差转换为视差/,这将在紧要关头实现这一点,因此将我指向这个方向肯定会有所帮助!我认为它适用于,例如parallax/index.html,但我不确定它是否适用于plain/parallax?它不适用于/parallax,因为如果最后没有/它将查找名为parallax的文件,但这对我有效,我用它将我的phpmyadmin文件夹放在服务器中。/parallax/确实有效,但/parallax不起作用(是的,它显示了url的完整/app/webroot/path)。可能我要求的太多了。听起来您没有将apache virtualHost的webroot设置为///app/webroot,而是将其指向/app文件夹或根文件夹。如果您的路径设置正确,您将永远不会在地址栏中看到路径的/app/webroot部分。您是否尝试在中将webroot设置为app/webroot而不是应用程序或根文件夹?
<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>