2012-08-06 89 views
1

我有一个项目必须包含在项目中。 所以..项目A是建立在定制的框架之上的网站使用这个的.htaccess重写规则:将两个项目中的两个.htaccess文件合并为一个

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.*)$ index.php?url=$1 [PT,L] 

第二个B项目是建立在另一种定制的框架顶部,我应该使它看起来像第一个子文件夹。 所以我把项目B放在一个文件夹“子文件夹”中。项目B有它自己的.htaccess看起来像这样:!

的RewriteCond%{} REQUEST_FILENAME -f

的RewriteCond%{} REQUEST_FILENAME -d

重写规则^ $指数(*)。 ?.PHP请求=%{REQUEST_URI} &%{QUERY_STRING} [NE,L]

我想将它们合并成一个单一的文件.htacess告诉到Apache类似:

如果我们有一个参数/子文件夹重定向一切的子文件夹/ index.php的

其他一切都重定向到index.php

任何想法,我该怎么办呢?

+0

当我尝试保留两个.htaccess文件并将RewriteBase更改为第二个RewriteBase /子文件夹时,我得到310(net :: ERR_TOO_MANY_REDIRECTS) – gotha 2012-08-06 08:55:11

回答

3

你应该做的是:

对于第一个项目,这htaccess文件是在文档根

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?url=$1 [L] 

然后在第二个项目,这htaccess文件是在subfolder目录:

RewriteEngine On 
RewriteBase /subfolder/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?request=%{REQUEST_URI} [NE,L,QSA] 

如果由于某种原因,这不是为你工作,我猜组合htaccess文件,一个驻留在文档根目录,会看像这样:

RewriteEngine On 

# for 2nd project 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/?subfolder/(.*)$ /subfolder/index.php?request=$1 [NE,L,QSA] 

# for 1st project 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?url=$1 [L] 

可能需要稍微调整一下。

+0

我试过但我在重写规则中忘记了(。*)$第二个项目,这一切搞砸了。 感谢您的帮助! – gotha 2012-08-06 10:57:43