我使用一些重写规则来为论坛制作可读的 url。例如,如果您发布一个主题标题为“嘿,您觉得这辆新车怎么样?”的新主题。我将创建一个这样的链接:forum/cars/51-Hey-what-do-you-think-of-this-new-car-?
其中 51 是主题 ID。
在我的 .htaccess 中,我使用了这个重写规则:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^forum/([0-9-a-z]+)/?$ forum/list_topics.php?key=$1 [L]
RewriteRule ^forum/([0-9-a-z]+)/([0-9]+)?$ forum/list_topics.php?key=$1&page=$2 [L]
RewriteRule ^forum/([0-9-a-z]+)/([0-9]+)-(.*)/?$ forum/list_post.php?topic=$2 [L]
所以这工作正常,除非我发布带有这些字符的主题标题: +"*ç%&/()=?'^
我使用 php 函数来创建 url,它是:
$url_topic = str_replace(' ', '-', $url_topic); //replace space with -
$url_topic = urlencode($url_topic);//encode url
在这种情况下,$url_topic 的值是:34-%2B%22%2A%C3%A7%25%26%2F%28%29%3D%3F%27%5E
但是当我点击它时,我有以下错误:
Not Found
The requested URL /forum/cars/34-+"*ç%&/()=?'^ was not found on this server.
Apache/2.2.22 (Ubuntu) Server at localhost Port 80
我错过了什么?
谢谢