【问题标题】:Apache htaccess: rewrite directory to query paramApache htaccess:重写目录以查询参数
【发布时间】:2023-02-14 06:22:55
【问题描述】:

我知道关于这个问题有很多问题,但我还没有找到在我的案例中如何重写的确切方法:

https://example.com/dev/myapp/#/?query=1234 有一个可用的应用程序,我想允许使用此 URL 的替代访问:https://example.com/dev/myapp/1234 而无需创建子目录 /1234。

使用 htaccess,我希望将后一个 URL 重写/转发到前一个 URL。

我试过的:

RewriteEngine On
RewriteRule ^myapp/([^/])?$ myapp/index.html?query=$1 [L]

将转发

https://example.com/dev/myapp/1234

https://example.com/dev/myapp/1234#/

RewriteEngine On
RewriteRule ^(?!myapp/)([^/])?$ /dev/myapp?query=$1 [L,R=302]

将转发

https://example.com/dev/myapp/1234

https://example.com/dev/myapp/?query=1234#/

我以某种方式坚持使用正确的语法。有什么帮助吗?

【问题讨论】:

  • myapp 是真正的子目录吗? .htaccess 是在 myapp 内还是与 myapp 处于同一级别?
  • “允许使用此 URL 的替代访问:https://example.com/dev/myapp/1234”- 您是想将该 URL 保留在浏览器的地址栏中,还是只是将请求重定向回您的应用程序当前可以理解的 URL? (我认为这是由客户端 JS 处理的吗?)
  • @anubhava 是的,myapp 是一个真正的子目录。 .htaccess 可以在 myapp 或父目录中,但最好在 myapp 中。
  • @MrWhite 这是个好问题。可能需要“在地址栏中保留该 URL”。但老实说,我需要测试两者是否会导致相同的行为,因为问题是在移动设备上安装 PWA 应用程序,并且在某些情况下它会忽略/不理解查询参数。

标签: apache .htaccess


【解决方案1】:

如果我很好理解,这个 url 的重定向:https://example.com/dev/myapp/1234https://example.com/dev/myapp/#/?query=1234 没有创建文件夹。

我创建的正则表达式组包含数字并重新用于您的查询参数,带有 NE 标志用于“noescape”输出并保留“#”语法。 你可以看到doc

您可以在虚拟主机中使用下面的代码。

  RewriteEngine On
  RewriteRule ^/dev/myapp/([0-9]+)$ /dev/myapp/#/?query=$1 [L,R=301,NE]

我希望这会帮助你

【讨论】:

    猜你喜欢
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多