#apache #.htaccess #mod-rewrite #url-rewriting #query-string
Вопрос:
На своем веб-сайте я пытаюсь переписать несколько своих URL-адресов, как показано ниже:
Этот URL-адрес
http://example.com/news.php?newstype=newsletteramp;newsid=1123amp;newstitle=my news title
инт к:
http://example.com/newsletter/1123/my news title
Мое правило перезаписи .htaccess
выглядит так, как показано ниже:
RewriteEngine On
Options FollowSymlinks
RewriteBase /
RewriteRule ^(.*)/(.*)/(.*)/?$ news.php?newstype=$1amp;newsid=$2amp;newstitle=$3 [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] =>
)
Может ли кто-нибудь сказать мне, что плохого я сделал в этом отношении?
Ответ №1:
Шаблон регулярного (.*)
выражения жаден. Он соответствует полному запрошенному пути. Попробуйте ([^/] )
вместо этого :
RewriteRule ^([^/] )/([^/] )/([^/] )/?$ news.php?newstype=$1amp;newsid=$2amp;newstitle=$3 [L,QSA,NC,B]