【发布时间】:2021-04-05 04:10:43
【问题描述】:
我有一个 SPA 应用,其中包含用于在 Facebook 上共享的动态内容,因此我使用 htaccess 中的以下规则将 Facebook 爬虫重定向到一个不错的静态页面:
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_USER_AGENT} ^facebookexternalhit.*$
RewriteRule ^(.*)$ https://sharing.mysite.tld/api/share/$1 [L]
这很好用!但是有一个问题......我无法让我的应用上线,因为 Facebook 需要一个指向隐私政策、条款和条件等的链接——而且这些也会被重定向!!
我需要忽略某些 URL - /docs/ 中请求的任何内容 - 从上述规则 编辑:以便正常遵循包含 /docs/ 的 URL(无重定向,只是正常提供)。 我无法让 .htaccess 了解忽略规则。我原以为会这样做(感谢https://stackoverflow.com/a/1848579/4881971):
RewriteRule ^(docs)($|/) - [L]
所以我会认为我的 .htaccess 文件看起来像这样:
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_USER_AGENT} ^facebookexternalhit.*$
RewriteRule ^(docs)($|/) - [L]
RewriteRule ^(.*)$ https://sharing.mysite.tld/api/share/$1 [L]
但是当我在https://mysite.tld/docs/privacy 上使用 Facebook 对象调试器时,我得到了 404!它重定向到https://sharing.mysite.tld/api/share/docs/privacy
如何保留规则但忽略来自 mysite.tld/docs/* 的请求?谢谢。
【问题讨论】:
标签: apache facebook .htaccess mod-rewrite url-rewriting