【问题标题】:Regex for htaccess redirect (with exceptions!)htaccess 重定向的正则表达式(有例外!)
【发布时间】:2022-10-21 01:00:03
【问题描述】:

我期待重定向数百个属于路径https://example.com/fragen/的URL,例如:

https://www.example.com/fragen/amazonerstattungen/
https://www.example.com/fragen/sonderbetriebsvermoegen/
https://www.example.com/fragen/troedel/

到像 https://www.example.com/wiki/ 这样的单个 URL

您能否建议我在 .htaccess 中包含正确的正则表达式以实现此目标?

此外,一些属于/fragen/ 路径的URL 应该单独重定向。 我想这些重定向应该在对象的代码块中的正则表达式之前。那是对的吗?

【问题讨论】:

    标签: regex apache .htaccess redirect


    【解决方案1】:

    使用 mod_rewrite,靠近根目录的顶部 .htaccess

    RewriteEngine On
    
    # Specific Redirects
    RewriteRule ^fragen/specific-url$ /somewhere-else [R=302,L]
    RewriteRule ^fragen/another-url$ /another-url [R=302,L]
    
    # Redirect everything else in "/fragen/" to "/wiki/"
    RewriteRule ^fragen/ /wiki/ [R=302,L]
    

    正则表达式 ^fragen/ 匹配任何以 fragen/ 开头的 URL 路径。请注意,RewriteRule 指令匹配的 URL 路径不以斜杠开头。

    是的,正如您所建议的,特定重定向需要在通用重定向之前。

    请注意,这些是 302(临时)重定向。始终先使用 302 进行测试以避免潜在的缓存问题。仅更改为 301(永久)重定向 - 如果这是意图 - 一旦您确认它按预期工作。

    在旁边:这可能没有您希望的 SEO 好处。像这样的多对一重定向通常被搜索引擎视为软 404。而且用户经常弹跳.通常最好实现自定义 404 响应并向用户提供页面所在位置的解释。

    【讨论】:

    • 非常非常感谢@MrWhite。你的答案是 100%
    • 再次抱歉,我测试了您的解决方案,结果如下: Internal Server Error 服务器遇到内部错误或配置错误,无法完成您的请求。请通过 [no address given] 联系服务器管理员,告知他们此错误发生的时间,以及您在此错误之前执行的操作。服务器错误日志中可能提供有关此错误的更多信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多