问题
我得到了太多的重定向:所有URL都无限地重定向到自己,为什么?
Apache重写规则是自上而下处理的,因此您的自定义重写规则总是先处理。这个R 重定向标志指示Apache告诉浏览器向更改的URL发出新请求,而不是在当前地址提供重写的目标,并且L “last”标志告诉Apache忽略所有正在进行的重写规则,所以无论何时RewriteRule 应用时,将发出新请求,并从顶部再次处理您的规则。
你的RewriteCond 指示Apache处理该过程RewriteRule 每当请求URI路径不以开头时/privacy-policy - 因此,实际上每个请求都会在您的.htaccess 甚至可以评估。
正如评论中提到的@MarkKaplen$1 是用第一个“捕获组”(模式中的第一组括号)中包含的匹配URI部分替换的反向引用。自从.* 字面上匹配任意数量的任意字符RewriteRule $1 替换为整个URI路径。
本质上,您的重写规则:
RewriteCond %{REQUEST_URI} !^/privacy-policy/
RewriteRule (.*) http://www.mywebsite.com/$1 [R=301,L]
 如果URI不是以开头,则计算为
/privacy-policy/, 让web浏览器向发送新请求
http://www.mywebsite.com/(original URI path)“。
因此,为了便于说明,假设您导航到http://www.mywebsite.com/blog/2015; 下面是每个请求的情况:
/blog/2015 不以开头/privacy-policy/, 告诉浏览器转到http://www.mywebsite.com/blog/2015./blog/2015 不以开头/privacy-policy/, 告诉浏览器转到http://www.mywebsite.com/blog/2015./blog/2015 不以开头/privacy-policy/, 告诉浏览器转到http://www.mywebsite.com/blog/2015.- […]
 
卸下
$1 从返回引用
RewriteRule 不足,因为URI路径为
/ (或只是空的一个)仍然不符合以开头的条件
/privacy-policy/, 导致以下行为:
/blog/2015 不以开头/privacy-policy/, 告诉浏览器转到http://www.mywebsite.com/./ 不以开头/privacy-policy/, 告诉浏览器转到http://www.mywebsite.com/./ 不以开头/privacy-policy/, 告诉浏览器转到http://www.mywebsite.com/.- […]
 
您可以通过查看Apache安装的日志文件来验证此行为。
如果您不打算使用WordPress的预期地址路由,那么没有理由保留默认重写规则并在其上堆叠更多规则。根据您的需要定制,而不是增加复杂性:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^(/|index\\.php)$ /index.php? [L]
RewriteRule ^/?privacy-policy/?$ /index.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /? [L,R=301]
</IfModule>
 总之,
- 。
RewriteRule ^(/|index\\.php)$ /index.php? [L]
    如果/ 或index.php 已明确请求,请送达index.php, 但是删除querystring(以防止通过查询var操作更改页面)并停止处理重写。 - 。
RewriteRule ^/?privacy-policy/?$ /index.php [L]
    如果privacy-policy (带或不带前导斜杠和尾随斜杠)已明确请求index.php 并停止处理重写。 - 。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /? [L,R=301]
 如果请求的文件名不是文件也不是目录,请在任意位置匹配一个字符(以便无论URI如何都应用该规则),并告诉浏览器向/ 丢弃它的querystring。停止处理重写。 
值得注意的是,您的预期结果可能会产生许多意外行为,例如,您可能无法访问管理仪表板。附件也可能损坏。但以上内容至少应该为更多地了解重写指令提供一个良好的起点。