Php 可能是htaccess中的URL编码?

Php 可能是htaccess中的URL编码?,php,.htaccess,get,Php,.htaccess,Get,考虑以下场景: 我希望能够访问http://www.example.com/word/hello/,其中单词hello是可变的。所以我设置了.htaccess来配置它 RewriteEngine On RewriteRule ^word/(.+)/?$ displayword.php?word=$1 [L] 我使用了.+,因为我还想过滤任何符号,例如?+-!;:等等 我相应地设置了我的PHP文件: <?php echo $_GET['word']; ?> 我不知道为什么。但后来我

考虑以下场景:

我希望能够访问http://www.example.com/word/hello/,其中单词hello是可变的。所以我设置了.htaccess来配置它

RewriteEngine On
RewriteRule ^word/(.+)/?$ displayword.php?word=$1 [L]
我使用了.+,因为我还想过滤任何符号,例如?+-!;:等等

我相应地设置了我的PHP文件:

<?php
echo $_GET['word'];
?>
我不知道为什么。但后来我意识到问号符号是URL变量的起点


那么,有没有一种方法可以对上面示例中的问号进行“url编码”以使其正确显示?

我不知道.htaccess文件的堆,但您可以将PHP脚本更改为使用,而不是使用$\u GET或$\u REQUEST


特别是,它可能会帮助您。

我不知道.htaccess文件的堆,但是您可以将PHP脚本更改为使用,而不是使用$\u GET或$\u REQUEST


特别是,可能会帮助您。

在HTTP协议中?将查询字符串与URL的其余部分分开,因此我认为不可能在URL中直接使用它。一种解决方案是将问号编码为%3F

然后您可以使用来解码字符串


有关其他字符的编码,请参见此项。

在HTTP协议中?将查询字符串与URL的其余部分分开,因此我认为不可能在URL中直接使用它。一种解决方案是将问号编码为%3F

然后您可以使用来解码字符串


有关其他字符的编码,请参见此项。

无需对其进行编码,请尝试以下操作:

RewriteEngine On
RewriteRule ^word/([a-zA-Z0-9-=_.?]+)/?$ displayword.php?word=$1 [L]

它会显示吗?在参数和添加到[组]的任何其他字符中。虽然我没有测试这个规则是否有效,但我想它确实有效。看起来不错,但这不是问题所在

无需对其进行编码,请尝试以下操作:

RewriteEngine On
RewriteRule ^word/([a-zA-Z0-9-=_.?]+)/?$ displayword.php?word=$1 [L]

它会显示吗?在参数和添加到[组]的任何其他字符中。虽然我没有测试这个规则是否有效,但我想它确实有效。看起来不错,但这不是问题所在

将代码更改为:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+word/([^/]+) [NC]
RewriteRule ^ index.php?word=%1 [L,QSA]

之所以这样做是因为RewriteRule在%{REQUEST_URI}上工作,它获取URI,即问号之前的字符串?但是%{u请求}在包含问号的完整URL上工作?还有。

将代码更改为:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+word/([^/]+) [NC]
RewriteRule ^ index.php?word=%1 [L,QSA]
之所以这样做是因为RewriteRule在%{REQUEST_URI}上工作,它获取URI,即问号之前的字符串?但是%{u请求}在包含问号的完整URL上工作?还有