我需要重定向第一个"/"在我的领域里。例如
我需要重定向这个:https://audiobookscloud.com/B07D5HYCR2
:https://example.com/B07D5HYCR2
但我需要确保这只发生在第一个斜杠后面有10个数字时,即:".com/">
我的解决方案是:
RewriteRule ([^/]+)/d{10}?$ https://www.example.com/$1 [L,R=301]
但是它没有像预期的那样工作。
如何解决这个问题?
您的匹配模式与您所描述的不匹配。您实现的是:任何包含非的非空字符串的字符串都包含一个斜杠,后面跟着一个斜杠,没有其他内容或正好是10个数字。RewriteRule
仅应用于请求URL的路径组件。所以就像你的例子中的/B07D5HYCR2
和,而不是到audiobookscloud.com/B07D5HYCR2
这样的东西,正如你显然期望的那样。
稍微改变匹配模式以更接近你所描述的:
RewriteRule ([^/]{10})?$ https://www.example.com/$1 [L,R=301]
虽然这会重定向一些url比你想要的,根据你的描述。这就是为什么我建议做一些进一步的改变:
RewriteRule ^/?[0-9A-Z]{10}$ https://www.example.com%{REQUEST_URI} [L,R=301]
该变体精确匹配所有恰好包含10个字符的请求路径,这些字符要么是数字,要么是大写字母,前面或后面没有任何内容。
我强烈建议您查看一下您正在使用的工具的文档。这里是apache重写模块。作为典型的开源软件,它具有出色的质量,并附带了很好的示例:https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html