【问题标题】:Apache rewrite path to paramaterApache重写参数路径
【发布时间】:2018-10-05 17:03:12
【问题描述】:

我将如何转换:

https://www.example.com/ja 重定向到https://www.example.com/?lng=ja

我已经尝试过 apache 重写规则:

RewriteRule ^ja$ /?lng=ja&%{QUERY_STRING}

但我在访问 https://www.example.com/ja 时只得到 404

我也试过了:

RewriteRule ^ja$ /?lng=ja

它只是用 /ja 加载主页,但似乎没有添加 url 参数

【问题讨论】:

  • 你是把指令放在 .conf 文件还是 .htaccess 中?
  • @DusanBajic 放置在 .htaccess 中,因为 conf 设置为允许来自 .htaccess 的覆盖。它肯定在做某事,因此当我尝试不同的事情时会加载 404 或不同的页面,它只是没有做我想要的。
  • 如果你想让规则做重定向,你需要[R]在行尾标记
  • @DusanBajic 天哪,就是这么简单!那行得通:)如果您想将其作为答案,我将标记为已接受。有没有办法重写但保持 url 看起来一样,就像别名一样?

标签: apache mod-rewrite url-rewriting


【解决方案1】:

试试RewriteRule ^ja$ /?lng=ja [R,L]

默认情况下,mod_rewrite 将 URL 映射到文件系统路径,但它也可用于将一个 URL 重定向到另一个 URL。

使用[R] flag 会导致向浏览器发出HTTP 重定向。如果指定了完全限定的 URL(即,包括http://servername/),则将向该位置发出重定向。否则,将使用当前协议、服务器名称和端口号来生成随重定向发送的 URL。

您几乎总是希望将[R][L] 结合使用(即使用[R,L]),因为[R] 标志本身会将http://thishost[:thisport] 附加到URI,但随后将其传递转到规则集中的下一条规则,这通常会导致“请求中的 URI 无效”警告。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 2013-03-03
    • 2020-11-25
    • 2015-04-10
    • 2016-09-08
    • 2023-03-31
    相关资源
    最近更新 更多