从 .htaccess 中获取查询字符串参数重写 URL in PHP

GET query string parameters from .htaccess rewrite URL in PHP

在我的网站中,我正在尝试重写我的一些 URL 如下:

这个URL

http://example.com/news.php?newstype=newsletter&newsid=1123&newstitle=my news title

int 到:

http://example.com/newsletter/1123/my news title

我在 .htaccess 中的重写规则如下所示:

RewriteEngine On
Options +FollowSymlinks
RewriteBase /

RewriteRule ^(.*)/(.*)/(.*)/?$ news.php?newstype=&newsid=&newstitle= [L,QSA,NC,B]

我的 <a> 标签是这样的:

$seoUrl = "$urlNewsType/$newsid/$urlNewsTitle/";
$seoUrl = urldecode($seoUrl);
$seoUrl = html_escape($seoUrl, 'UTF-8');

<a href="$seoUrl">Read More</a>

这些都对我有用。但我的问题是,我需要将这些查询字符串参数分别从 URL 获取到 PHP。问题是我无法像往常一样获取这些参数。

在php中,这是输出: echo '<pre>',print_r($_GET).'</pre>';

Array
(
  [newstype] => news/1114
  [newsid] => Presentation: Heath+Day+in+2018
  [newstitle] => 
)

谁能告诉我,我在这方面做错了什么?

正则表达式模式 (.*) 是贪婪的。它匹配完整的请求路径。试试 ([^/]+) 代替:

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ news.php?newstype=&newsid=&newstitle= [L,QSA,NC,B]