我们的域名/app/index.php正在iframe中加载domain.com/blog。
所以我的redirect规则应该是这样的;
- domain.com/ => /app/index.php - domain.com/blog(.*) => /app/index.php?(.*)
第二条规则是因为如果有人想直接去博客,我们首先运行我们的应用程序,并将博客放在iframe中,并将传入的查询string附加到iframe src标记,以便它不打开它的主页,而是打开请求的URL。
问题是,因为我redirect我的第一条规则,iframe结束了无限循环。 它试图无休止地把自己放入另一个iframe中。
有没有办法分配一个Env var,这样如果redirect,它不会重复?
或者为了清楚地解决这个问题,我不希望博客在没有应用程序的情况下打开。 我的htaccess应该如何?
感谢:D
ps:我们想在htaccess上做,因为php + jsredirect是低效率和丑陋的。
你可以研究RewriteCond指令来有条件地应用RewriteRule。 但是,如果您的RewriteRule明确匹配期望的URL的开始和结尾来redirect,例如,这应该不是严格必要的
RewriteRule ^/$ /app/index.php [L]
请注意,redirect可以是内部的或外部的。 如果您明确提供了[R]标志到您的RewriteRule,那么浏览器将被通知要获取的新URL。 否则,Apache将尝试在内部获取重写的规则,而不通知浏览器获取实际的URL。
最后,您可以在.htaccess文件中使用mod_rewrite指令( RewriteEngine , RewriteCond , RewriteRule )。
我发表了一个关于避免无限循环的教程 ,你可能会觉得有用。 在为URL创build重写规则时没有结尾斜杠是个大问题。 我希望它给你的见解。 -侦察
你可以试试mod_rewrite。 在.htaccess中这样的东西:
RewriteEngine On RewriteRule /blog/(.*) /app/index.php?$1 [R] RewriteRule ^index.php$ /app/index.php [R]
从理论上讲,已经有一个envvariables来完成这个工作:
RewriteCond %{ENV:REDIRECT_STATUS} 200 RewriteRule .* - [L]
但我不确定它是否有效…(我从来没有使用过这个function。)