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应用程序中排除根文件夹_.htaccess_Cakephp - Fatal编程技术网

.htaccess 从CakePHP应用程序中排除根文件夹

.htaccess 从CakePHP应用程序中排除根文件夹,.htaccess,cakephp,.htaccess,Cakephp,我试图从Cake(根文件夹应用程序)中排除一级目录,因为它应该包含一个不同的应用程序 /保存应用程序 /开发/保存应用程序的测试版本 目录结构: 公用文件夹 .htaccess [modified] app .htaccess [unmodified] webroot .htaccess [unmodified] index.php [unmodified] ... ... lib Cake ... deve

我试图从Cake(根文件夹应用程序)中排除一级目录,因为它应该包含一个不同的应用程序

/保存应用程序

/开发/保存应用程序的测试版本

目录结构:

公用文件夹

.htaccess [modified]
app
    .htaccess [unmodified]
    webroot
        .htaccess [unmodified]
        index.php [unmodified]
        ...
    ...
lib
    Cake
    ...
development
    app
        webroot
            index.php [dumps $_SERVER for test purposes]
因此,我的开发结构中仍然没有应用程序(nor.htaccess),只是为了测试我的root.htaccess是否有效

这是我对root.htaccess的修改:

<IfModule mod_rewrite.c>
   RewriteEngine on

   RewriteCond %{REQUEST_URI} ^/development.*
   RewriteRule (.*) - [L]

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

重新启动发动机
重写cond%{REQUEST_URI}^/开发*
重写规则(.*)-[L]
重写规则^$app/webroot/[L]
重写规则(*)app/webroot/$1[L]
发生了什么:

/development/显示开发文件夹的apache索引

/development/app/显示应用程序文件夹的apache索引

/development/app/webroot显示根应用程序(不管开发url是否匹配,都会捕获请求)

/development/app/webroot应该显示我的/development/app/webroot/index.php文件,对吗


我到底错过了什么?

这是我服务器上的一个奇怪的错误

现在起作用的
.htaccess
结果是:

<IfModule mod_rewrite.c>
   RewriteEngine on

   RewriteCond %{REQUEST_URI} !^/development(?:$|/)
   RewriteRule    ^$ app/webroot/    [L]

   RewriteCond %{REQUEST_URI} !^/development(?:$|/)
   RewriteRule    (.*) app/webroot/$1 [L]

</IfModule>

重新启动发动机
重写cond%{REQUEST_URI}^/发展($|/)
重写规则^$app/webroot/[L]
重写cond%{REQUEST_URI}^/发展($|/)
重写规则(*)app/webroot/$1[L]
由于我不知道的原因,如果我使用SSH连接到我的用户帐户并通过命令行编辑.htaccess文件,它将无法工作

当我上传相同的文件(通过SFTP)时,它开始正常工作

我正在CentOS(5.9)上使用cPanel(11.34.1)

另一个示例:如果希望在CakePHP安装上“忽略”多个子文件夹,可以使用以下模式:

<IfModule mod_rewrite.c>
   RewriteEngine on

   # /development, /version1.5 and /version1.8 directories
   # they all hold independent apps
   # or completely non-cake-related content

   RewriteCond %{REQUEST_URI} !^/(?:development|version1\.5|version1\.8)(?:$|/)
   RewriteRule    ^$ app/webroot/    [L]

   RewriteCond %{REQUEST_URI} !^/(?:development|version1\.5|version1\.8)(?:$|/.*)
   RewriteRule    (.*) app/webroot/$1 [L]

</IfModule>

重新启动发动机
#/development、/version1.5和/version1.8目录
#它们都拥有独立的应用程序
#或完全与蛋糕无关的内容
重写cond%{REQUEST_URI}^/(?:开发|版本1\.5 |版本1\.8)(?:$/)
重写规则^$app/webroot/[L]
重写cond%{REQUEST_URI}^/(?:开发|版本1\.5 |版本1\.8)(?:$/*)
重写规则(*)app/webroot/$1[L]

请注意,这两个
RewriteCond
指令是相同的。

创建一个虚拟主机(可能具有不同的端口)来托管您的开发站点不是更容易吗?这个虚拟主机将指向/development/app/webroot。。或者通常是子域,是的。但我需要使用第三方SOAP服务进行测试,该服务使用安装在主服务器上的SSL证书,这就是为什么我需要将其放在子目录中。这也是一个解决共同问题的问题。依我看,任何平台都应该能够轻松地与站点上的其他系统共存,而不是占用根空间。在图案中是用来捕捉实际点的。如果没有\,点表示任何字符。请将此代码片段放在上面,以便以后可以喜欢它。;)