.htaccess 允许在URL中使用特殊字符

.htaccess 允许在URL中使用特殊字符,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我想在URL中允许特殊字符 我的密码是 <IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteRule ^blog/?$ SocialNetwork/blog.php [L] RewriteRule ^blog/(\d+)/?$ SocialNetwork/blog.php?id=$1 [L] RewriteRule ^blog.php/(\d+)/?$ SocialNetwork/blog.php?id=$1

我想在URL中允许特殊字符
我的密码是

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^blog/?$ SocialNetwork/blog.php [L]
RewriteRule ^blog/(\d+)/?$ SocialNetwork/blog.php?id=$1 [L]
RewriteRule ^blog.php/(\d+)/?$ SocialNetwork/blog.php?id=$1 [L]
RewriteRule ^blog.php/(\d+)/([A-Za-z0-9-_[]]+)/?$ SocialNetwork/blog.php?id=$1&title=$2 [L]
</IfModule>

重新启动发动机
重写基/
重写规则^blog/?$SocialNetwork/blog.php[L]
重写规则^blog/(\d+)/?$SocialNetwork/blog.php?id=$1[L]
重写规则^blog.php/(\d+)/?$SocialNetwork/blog.php?id=$1[L]
重写规则^blog.php/(\d+)/([A-Za-z0-9-[]]+)/?$SocialNetwork/blog.php?id=$1,title=$2[L]
它适用于

blog/1

blog/1/hii

blog/1yooo\u标题

但这并不适用于任何人


blog/1/[hii这是[]title

我很确定你不能在URL中使用空格。永远。

在你上次的重写规则中,尝试转义方括号。如果你需要匹配空格,你需要在其中包含\s:

^blog.php/(\d+)/([A-Za-z0-9-_\[\]\s]+)/?$ 

或者也许考虑在标题中接受任何东西的简单:

^blog.php/(\d+)/(.+)/?$ 

另一点是,URL中不应该有空格。它们应该转义为“+”或%20。因此,根据这一点,您的正则表达式将发生变化,但我建议的最后一个正则表达式除外。

仅字母数字,即特殊字符“$-。+!*”()”,并且用于保留目的的保留字符可以在URL中非编码使用


blog/1/[hii这是[]标题
实际上是无效的URL。