处理url中的非英文字符时出现htaccess错误,但没有它

时间:2015-04-01 13:45:20

标签: php .htaccess

如果URL中的文章标题是用全英文书写的,那么一切都会正确显示。但是如果标题是用希腊语写的,我会得到404页。不使用htaccess重写规则,它显示页面。

我的问题是我如何才能使用htaccess?

htaccess error when dealing with RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^article/([a-zA-Z0-9]+)/?$ article.php?title=$1 [NC,QSA,L]
RewriteRule ^([^\.]+)$ $1.php [NC,L]

3个场景:

第一(英文字符):

title: hello
url: example.com/article/hello
OPENS THE PAGE

第二名(希腊字符):

title: γειά
url: example.com/article/γειά
The requested URL article/γειά.php was not found on this server.

第三(不使用htaccess):

/article.php?title=γειά
OPENS THE PAGE

2 个答案:

答案 0 :(得分:0)

尝试:

RewriteRule ^article/(.*)/?$ article.php?title=$1 [NC,QSA,L]

这将允许“title”参数的任何输入,该参数应传递给任何输入。

答案 1 :(得分:0)

[a-zA-Z0-9]只会匹配英文文本和数字。

将文章重写规则更改为:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^article/([^/]+)/?$ index.php?title=$1 [NC,QSA,L]

[^/]+将匹配1个或多个任何字符,直到匹配下一个/或达到字符串结尾,从而匹配非英语字符。