php - .htaccess 简洁的 url,如果 $_GET 数据有空格,它会重定向到 404 页面

标签 php .htaccess

我正在使用 .htaccess 将我的网址从

www.mysite.com/profile.php?name=name

www.mysite.com/name/name

但是我遇到了一个问题,如果名称有空格而不是显示用户数据,它会将我带到 404 页面。我已经对名称进行了编码,这样如果有空格,它就会用 %20 替换它但它仍然不起作用.. 没有空格的名称就可以了

重写规则:

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

最佳答案

查看您的重写规则。您有一个正则表达式,表示“一个或多个字母或数字”:

[a-zA-Z0-9_-]+

空格不是其中之一。这就是它不匹配的原因。将\s 添加到正则表达式:

[a-zA-Z0-9_-\s]+

关于php - .htaccess 简洁的 url,如果 $_GET 数据有空格,它会重定向到 404 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13223902/

相关文章:

php - 选择最后 5 条记录并在 PDO 中升序排序

php - 基于CNIC从两个数据库表中检索特定数据

php - 我可以有一个与任何其他表无关的数据库表吗?

.htaccess - 301重定向目录的正确方法

php - 用户登录后将所有网页重定向到 HTTPS?

php - 如何从 PhpStorm 全局搜索中排除文件 (Ctrl+Shift+F)

php - Laravel 取消散列值?

wordpress - htaccess wordpress 301 重定向

php - 如何在.htaccess 中设置upload_max_filesize?

regex - 通过 htaccess 中的正则表达式删除文件夹