2010-11-05 80 views
1

我有多个CakePHP项目托管在同一个域和一些randoms文件夹与兰登文件,用于组织我分开APPs上的文件夹,但我有“主”应用程序在网站文件夹,当用户访问域时,它应该将URL重写到/ site,我的问题是随机文件夹,当我尝试访问domain.com/exist_folder时,它将我重定向到/ site。重写URL到多个APP的子文件夹

我不想重写如果文件/目录存在于服务器上。

FTP树的例子

public_html/ 
-cakephp (CakePHP Core)/ 
    - ... 
-site (CakePHP App)/ 
    - ... 
    -.htaccess 
    -webroot/ 
    -.htaccess 
-exist_folder/ 
    - whateverfiles.ext 
-app1 (CakePHP App)/ 
    - ... 
    -.htaccess 
    -webroot/ 
    -.htaccess 
-folder1/ 
-temp/ 
    -images 
    -videos 
-.htaccess 

我的.htaccess

的public_html /的.htaccess

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} -f [OR] 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^$ site/ [L] 
    RewriteRule (.*) site/$1 [L] 
</IfModule> 

网站/的.htaccess和APP1 /的.htaccess

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

网站/根目录/的.htaccess和APP1 /根目录/的.htaccess

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

回答

0

所以基本上你有你不想通过Cake的路由和调度某些文件夹。对于这一点,添加以下行您的public_html/.htacess文件:

RewriteRule ^(exist_folder).* - [NC,L] 

这将允许这是在根目录下的exist_folder直接访问。在添加此规则后可以访问http://domain.com/exist_folder

如果你正在寻找一个自动化的解决方案(你的线:我不想重写,如果文件/目录存在于服务器上),创建一个PHP文件,将生成一个.htaccess文件与上述基于is_dir() 。每当你添加一个文件夹,运行这个PHP文件which'll生成一个.htaccess与所有例外添加:)

+0

我的CakePHP项目在ubunto服务器作为子域(如sub_test.test-domain.com)。其实我想运行域(sub_test.test-domain.com/sub_drectory_test),它不起作用。 “RewriteRule ^(exist_folder)。* - [NC,L]”在本地计算机(本地主机或wampserver)中工作正常。请任何帮助? @Ashok – 2014-09-30 06:57:48