Apache 如何组合.htaccess规则?

Apache 如何组合.htaccess规则?,apache,redirect,mod-rewrite,web,Apache,Redirect,Mod Rewrite,Web,我想将这两个.htaccess规则结合起来用于网站: RewriteRule ^newsletter\.html$ https://fleio.com/newsletter [L,R=301] RewriteRule ^newsletter[/]?$ newsletter.html [L] 如果只有一个是活动的,那么它正在做它必须做的事情。但当我同时使用这两种方法时,我会得到一个错误 重定向太多 第二条规则是在内部多次将请求重定向到同一位置(第一个rue),因此您将得到循环错误。您需要使用

我想将这两个
.htaccess
规则结合起来用于网站:

RewriteRule ^newsletter\.html$ https://fleio.com/newsletter [L,R=301]  
RewriteRule ^newsletter[/]?$ newsletter.html [L]
如果只有一个是活动的,那么它正在做它必须做的事情。但当我同时使用这两种方法时,我会得到一个错误

重定向太多


第二条规则是在内部多次将请求重定向到同一位置(第一个rue),因此您将得到循环错误。您需要使用RewriteCond并与_request变量匹配,以防止重写循环

试试这个:

RewriteEngine on

RewriteCond %{THE_REQUEST} /newsletter\.html [NC]
RewriteRule ^ /newsletter/ [L,R]
RewriteRule ^newsletter/?$ /newsletter.html [NC,L]

你将一个重定向到另一个,反之亦然,这是一个循环。您希望将哪些URL重定向到哪里?我们不会到“外部”查看代码。将其粘贴到此处,作为对您的问题的编辑。RewriteRule^ newsletter\.html$[L,R=301]RewriteRule^ newsletter[/]?$newsletter.html[L]我希望该新闻稿显示newsletter.html的内容,然后将newsletter.html重定向到example.com/newsletter,这就是正在发生的事情。谢谢您!工作很好。如果您使用的是apache
2.4,欢迎@badrhari。
您可以在内部重写规则中使用END标志来防止重写循环。以下示例适用于apache 2.4及更高版本:
RewriteRule^newsletter\.html$https://fleio.com/newsletter [L,R=301]重写规则^newsletter[/]?$newsletter.html[END]