Apache:mod_rewrite:Spcaes&;URL中的特殊字符无效

Apache:mod_rewrite:Spcaes&;URL中的特殊字符无效,apache,mod-rewrite,special-characters,urlencode,Apache,Mod Rewrite,Special Characters,Urlencode,我使用APACHE:mod_rewrite来定义一组重写URL的规则 我希望此链接显示为 /myDIR/walls.php?f=All&of=0&s=newst->All.html 所以我使用以下规则 来自(.htaccess)的文本 现在,这些变量作为 f=Allof=0s=newst显然,这些变量正在查询中使用,其中一个变量,即f有时具有带空格和特殊字符的值,我无法避免,因为数据库已经就绪,我正在重写URL 现在当我试图定义这样一个规则时 RewriteRule ^Characters%20

我使用APACHE:mod_rewrite来定义一组重写URL的规则

我希望此链接显示为

/myDIR/walls.php?f=All&of=0&s=newst
->
All.html

所以我使用以下规则

来自(.htaccess)的文本

现在,这些变量作为
f=All
of=0
s=newst
显然,这些变量正在查询中使用,其中一个变量,即
f
有时具有带空格和特殊字符的值,我无法避免,因为数据库已经就绪,我正在重写URL

现在当我试图定义这样一个规则时

RewriteRule ^Characters%20%26%20Supers\.html$  papers.php?f=Characters%20%26%20Supers&of=0&s=Newest
我希望此链接显示为

/myDIR/walls.php?f=Characters&Supers&of=0&s=Newest
->
Characters&Supers.html

我知道这是错误的,因为不应该有任何空间。。因此,为了使其正确,我定义了如下规则

RewriteRule ^Characters%20%26%20Supers\.html$  papers.php?f=Characters%20%26%20Supers&of=0&s=Newest
它允许我定义规则,但是当我点击我的链接时,我得到了这个 404未找到错误“在此服务器上未找到请求的URL/wallz/Characters&Supers.html。”

问题:怎么办


我猜我不应该在里面做HTML URL编码。htaccess

你的猜测是正确的。当URL到达mod_rewrite进行处理时,Apache已经为您解码了URL。因此,如果要检查任何其他编码字符,则需要使用它们的文字表示

由于此处使用空格作为分隔符,因此还需要转义空格:

RewriteRule ^Characters\ &\ Supers\.html$ papers.php?f=%0&of=0&s=Newest
我相信使用引号也会起作用,因此以下内容应该是等效的(尽管未经测试):


关于Apache解码过程的最后一点是,它会自动为您删除多个斜杠。虽然与您的示例无关,但这是在达到mod_重写规则之前如何转换URL的另一个示例。

您的猜测是正确的。当URL到达mod_rewrite进行处理时,Apache已经为您解码了URL。因此,如果要检查任何其他编码字符,则需要使用它们的文字表示

由于此处使用空格作为分隔符,因此还需要转义空格:

RewriteRule ^Characters\ &\ Supers\.html$ papers.php?f=%0&of=0&s=Newest
我相信使用引号也会起作用,因此以下内容应该是等效的(尽管未经测试):


关于Apache解码过程的最后一点是,它会自动为您删除多个斜杠。虽然与您的示例不相关,但这是另一个在达到您的mod_重写规则之前如何转换URL的示例。

c'mon伙计们,这是我的911。。我早上第一件事就是要让它工作快点伙计们这是我的911。。我早上第一件事就是要让它工作