我是新来的,需要你的帮助。我开始使用 .htaccess 和 php,但遇到了一个问题。在进行 url 重写时,我将一个字符串传递给 url,该字符串是从数据库中提取的文章的标题。问题是字符串(标题)有很多在 url 中拼写错误的字符。EG: localhost/news/php%5%is%out 这里 % 是空格。我尝试用 preg_replace 格式化每个标题,并用“-”替换每个空格,但是有很多字符,我想知道是否有任何方法可以在没有 preg_replace 的情况下执行此操作,因此任何字符串都可以用于查询。在 news.php 中,我从 url 中获取字符串,并将其用于数据库中的查询,从中提取整篇文章的正文。
RewriteRule ^news/([a-zA-Z0-9._]+)/?$ /news.php?news_title=$1
这是我的 .htaccess 文件,所以在 news.php 中我通过 $_GET 获取“news_title”变量,然后查询数据库以找到具有此标题的文章。所以我的问题是,我做错了吗?有没有其他方法可以做到这一点?我仅在 2 天前开始使用 htaccess,我想让我的网址更友好。我希望我的问题很清楚。感谢所有帮助我的人。
仅举个例子,这是我用来转换字符串中的普通图块的方法,该字符串不会随 url 中的符号(;amp、%、?等)改变
function generateUrl($url) {
$v1 = preg_replace("/[\s\:\;\,\_\'\`\"\?\!\%\(\)\+\=\#\@\[\]\{\}\/]/", "-", $url );
$v2= preg_replace('/[-]{2,}/', '-', $v1);
$v3 = preg_replace('/^[-]/', '', $v2);
$final = preg_replace('/[-]$/', '', $v3);
return $final;
}