【发布时间】: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 应用程序,并且在某些情况下它会忽略/不理解查询参数。