在HTACCESS中结合两个不同的规则

时间:2015-06-02 20:12:31

标签: php .htaccess mod-rewrite rewrite

我终于能够在我的HTACCESS文件中成功创建一个规则,以隐藏子文件夹。

 RewriteEngine On

 RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/?([^/]+)/([^/]+)/([^.]+)\.php [NC]
 RewriteRule ^ /%1/%3 [R=301,L]

 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^([^/]+)/([^/]+)/?$ $1/Project/$2.php [NC,L]

第一条规则删除所有文件扩展名:php

第二条规则将隐藏文件夹" Project"来自网址

这两条规则都运作良好。

但是,当我尝试添加第三个规则时,为了隐藏另一个文件夹,它失败了。

第二个文件夹(Rolan)与" Project"位于同一位置。文件夹,所以我认为它应该只通过复制粘贴第二个规则:

 RewriteEngine On

 RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/?([^/]+)/([^/]+)/([^.]+)\.php [NC]
 RewriteRule ^ /%1/%3 [R=301,L]

 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^([^/]+)/([^/]+)/?$ $1/Project/$2.php 

 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^([^/]+)/([^/]+)/?$ $1/Rolan/$2.php [NC,L]

(请注意:我从第二条规则的末尾删除了 [NC,L] ,并将其放在第三条规则的末尾。)

第一和第二条规则仍然有效。但是,对于第三条规则,我得到了一个" FILE NOT FOUND:404 "错误

更新

我修改了我的HTACCESS文件,如下所示:

 RewriteEngine On
 RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/?([^/]+)/([^/]+)/([^.]+)\.php [NC]
 RewriteRule ^ /%1/%3 [R=301,L]

 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^([^/]+)/([^/]+)/?$ $1/Project/$2.php
 RewriteRule ^gagoo/([^/]+)/([^/]+)/?$ $1/Rolan/$2.php [NC,L]

我添加了前缀" gagoo "第三条规则。

然后,在我的PHP代码中,我使用了URL: / gagoo / Rolan / file_name

但是,我仍然收到404错误。

我尝试删除" Rolan"来自网址: / gagoo / file_name

而且,仍然没有运气。

实际上,规则的运作方式," Rolan"不应该包含在URL中(毕竟,规则的目的是隐藏浏览器中显示的" Rolan"文件夹........与第二条规则相同隐藏" PHP"文件夹)

0 个答案:

没有答案