我有两个文件夹,app
和landing
。landing
文件夹是一个SPA,当用户访问/
、/images/.*
或/_next/.*
时,必须显示该文件夹。每隔一个url路径都应该对app
文件夹进行内部重写。所以我在landing
和app
的文件夹中写了这个.htaccess:
RewriteEngine On
# Redirect root, _next and assets paths to landing folder and subsequent resources
RewriteCond %{REQUEST_URI} ^/(_next|images|)(/.*)?$
RewriteRule ^(.*)$ /landing/$1 [L]
# Redirect everything else to app
RewriteRule ^(.*)$ /app/$1 [L]
当我去/我的浏览器被重定向到/app/public/landing。但是如果我去掉最后一行,着陆就能正确显示出来。
1条答案
按热度按时间dsf9zpds1#
L
标志停止当前运行 * 的重写过程 *。这意味着重写的位置在下一次运行中 * 再次 * 重写。由于位置/landing/...
与第一个规则的条件不匹配,因此应用了第二个条件,请求被重写为/app/landing/...
你有两个直接的选择:
或者使用
END
标志而不是L
标志,这将完全终止重写过程,而不仅仅是当前运行:或者在第二条规则中添加一个条件:
注意:我还修复了您的实现中的一些其他小问题。