我正在寻找一个解决方案,我可以在单个 RewriteCond 语句中定义多个匹配语句,

如果此字符串中的任何一个出现在 url 中,我想重定向到主页:/it/, /de/, /fr/
我试着这样写:

  • 这是抛出 SERVER ERROR :
    RewriteCond ^(/it/ | /de/ | /fr/ )
    RewriteRule 'myhomepageurl'
    
  • 我也试过这种方式:
    RewriteCond /it/ [OR]
    RewriteCond /de/ [OR]
    RewriteCond /fr/ [OR]
    RewriteRule 'myhomepageurl'
    

  • 这导致意外的结果页面无限加载并且管理员被阻止。所以我最终采取了这种方式:
    RewriteCond /it/
    RewriteRule 'myhomepageurl'
    
    RewriteCond /de/
    RewriteRule 'myhomepageurl'
    
    RewriteCond /fr/
    RewriteRule 'myhomepageurl'
    

    我只是对可以单次执行此操作的单个语句感到好奇。

    谢谢

    最佳答案

    您的第一个示例因空格而失败;更好的正则表达式类似于

    RewriteCond ^/(it|de|fr)/
    RewriteRule 'myhomepageurl'
    

    无论哪种方式,您都应该阅读 When Not To Use Rewrite 并使用那里建议的一种更简单的形式,例如
    RedirectMatch /(it|de|fr)/ /myhomepageurl
    

    关于.htaccess - htaccess 在 RewriteCond 中使用 OR 条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17343769/

    10-16 08:56