允许URL中的特殊字符

时间:2011-06-14 16:51:14

标签: .htaccess mod-rewrite

我想在URL 中允许使用特殊字符 我的htaccess代码是

<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/1
blog/1/hii
blog/1yooo_title

但不适用于

blog/1/[hii-this is [] title

3 个答案:

答案 0 :(得分:2)

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

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

或许可以考虑更简单的接受标题中的任何内容:

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

另一点是您的网址中不应包含空格。它们应该被转义为“+”或%20。因此,根据这一点,你的正则表达式会发生变化,除了我提出的最后一个应该有效。

答案 1 :(得分:0)

我很确定你不能在URL中使用空格。如初。

答案 2 :(得分:0)

只有字母数字,特殊字符“$ -_。+!*'(),”和用于其保留目的的保留字符可以在URL中以未编码的形式使用。

http://www.ietf.org/rfc/rfc1738.txt