.htaccess 是否向htaccess添加另一个异常?

.htaccess 是否向htaccess添加另一个异常?,.htaccess,redirect,webserver,.htaccess,Redirect,Webserver,My.htaccess文件允许访问服务器上的真实文件和文件夹。对于其他内容,它将重定向到/index.php,除非指定了app文件夹,在这种情况下,它将重定向到/app/index.php。我想添加一个名为appbeta的第二个文件夹,它将重定向到/appbeta/index.php。我应该如何修改.htaccess以添加此附加异常 SetEnv APPLICATION_ENV development RewriteEngine On RewriteCond %{REQUEST_FILENA

My.htaccess文件允许访问服务器上的真实文件和文件夹。对于其他内容,它将重定向到
/index.php
,除非指定了
app
文件夹,在这种情况下,它将重定向到
/app/index.php
。我想添加一个名为
appbeta
第二个文件夹,它将重定向到
/appbeta/index.php
。我应该如何修改.htaccess以添加此附加异常

SetEnv APPLICATION_ENV development

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(?!app)(.+)$ /index.php?u=$1 [NC,QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^app(.+)$ /app/index.php?u=$1 [NC,QSA,L]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

我不太清楚以下重写的作用:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(?!app)(.+)$ /index.php?u=$1 [NC,QSA,L]
但是,如果您当前的
.htaccess
工作正常,我会尝试以下方法,将
/appbeta
的重写置于
/app
的重写之前:

SetEnv APPLICATION_ENV development

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(?!app)(.+)$ /index.php?u=$1 [NC,QSA,L]

# rewrite /addbeta to /appbeta/index.php ...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^appbeta(.*)$ /appbeta/index.php?u=$1 [NC,QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^app(.+)$ /app/index.php?u=$1 [NC,QSA,L]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

注意:没有如评论中所述的新问题,请修复上面的问题(将
^appbeta(+)$
更改为
^appbeta(+.*)$

第一次重写说使用
/index.php…
,除非url与应用程序匹配。。。。至于你的建议,我试过了,但没用。它继续重定向到app.Ah,然后让我们把new/appbeta放在我不理解的规则之前。我将更新答案中的顺序。很抱歉,您的原始答案是正确的。然而,仍然存在
http://domain.com/appbeta
vs
http://domain.com/appbeta/
@gil我看到您的更新,并确认我的错误是使用贪婪的
(.+)
-(一个或多个)而不是懒惰的
(.*)
-零或多个。