【发布时间】:2019-05-30 13:55:25
【问题描述】:
尝试使用 htaccess 将 Googlebot 重定向到来自这种形式的传入 URL 文件请求:
v_3099_0726dd5b5e8dd67a214c0c243436d131_all.css
到此格式的文件,其中5028 的四位数字未知,但始终为四位数字。
v_5028_0726dd5b5e8dd67a214c0c243436d131_all.css
我认为这对于正则表达式是不可能的,因为这四个字符的 catchcall 正则表达式不能在目标路径中使用。换句话说,Rewrite 不能被告知“去目录____中查找一个文件名,该文件名与除了这四个字符之外的所有内容都匹配,并将它们与正则表达式匹配。”
在 RewriteCond 中,正则表达式的模式匹配仅在右侧可用,在 CondPattern 中,而不是在左侧(测试字符串),在那里人们可能错误地希望使用正则表达式来匹配文件名带有 -f 标志的服务器,然后在 RewriteRule 的反向引用中使用该正则表达式分组来实现目标。这种策略行不通。
在 RewriteRule 中,与正则表达式的模式匹配仅在左侧可用,在传入 URL 的 Pattern 中,因此不能在右侧使用说,“去看看目录____除了这四个未知数字之外的相同文件,并重定向到该文件。”这种策略也行不通。
任何想法如何实现顶部所述的目标?谢谢。
【问题讨论】:
-
"到这种形式的文件,其中
5028的四位数字未知" - 那么,您如何确定要重定向到哪个文件? (为什么只有 Googlebot?) -
这就是我想要完成的工作——弄清楚当 Googlebot 请求那个过时的文件名时,我如何将 Googlebot 发送到当前文件。除了这四个字符之外,它的名字都是一样的。 Googlebot,因为我不希望它在搜索过时的 CSS/JS 文件时出现 404。
标签: regex apache .htaccess mod-rewrite