php .htaccess重写带空格的规则变量

wa7juj8i  于 2023-10-15  发布在  PHP
关注(0)|答案(1)|浏览(115)

我在.htaccess中有以下代码

RewriteEngine On

#RewriteRule ^index$ index.php [L]

RewriteCond {REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^([^\.]+)$ $1.php [NC,L]

RewriteRule ^partners/([0-9]+)/([0-9a-zA-Z_-]+) partners.php?id=$1&name=$2 [NC,L]

当我点击像partners/1/john这样的链接时,它似乎可以工作,但它不适用于partners/1/john cena。如果只有一个单词,但没有两个单词和一个空格,那么链接似乎是有效的。
我不明白为什么?

6ioyuze2

6ioyuze21#

默认情况下,空格在您提供的正则表达式模式中不匹配。要使规则适用于包含空格的URL,您应该修改正则表达式以包含空格。可以使用“\s”模式匹配空格

RewriteEngine On

# Rewrite URLs that do not have a corresponding file or directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

# Rewrite URLs with spaces in the name
RewriteRule ^partners/([0-9]+)/([0-9a-zA-Z\s_-]+) partners.php?id=$1&name=$2 [NC,L]

相关问题