我想将/tagged/c#映射到我的网站上的/?tagged=c#。显然,服务器不会看到#,因此我将其编码为%23。这是我正在使用的.htaccess文件:

RewriteBase /
RewriteEngine On
RewriteRule ^tagged/(.*)$ /?tagged=$1 [NC]

如您所料,这可以通过传递C#查询来实现:
/?tagged=C%23

但是这些都不是,所有这些都可以传递C的查询
/tagged/C%23
/tagged/C%23moretextthatgetslost

我假设#被解释为文字哈希,因此在此过程中会丢失。

要使第二种情况起作用,我需要怎么做?

最佳答案

原来我需要使用 [B] 标志:

RewriteBase /
RewriteEngine On
RewriteRule ^tagged/(.*)$ /?tagged=$1 [NC,B]

解释文档:

带有B标志,它将改为将/C%2b%2b映射到/index.php?show=/C%2b%2b

09-25 21:29