从 .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]
在我的网站中,我正在尝试重写我的一些 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]