Первоначально мне удалось переписать URL-адрес, используя идентификатор
с кодом htaccess :
RewriteRule ^link/([0-9]+)\.html$ sub_index.php?link_id=$1
и код ссылки
a href="link/id.html">
Он успешно отображает:
Затем я попытался сделать url следующим: mysite.com/link/Trekking в Непале / 6.html, где «Трекинг в Непале» – это заголовок в базе данных
Я написал код htaccess :
RewriteRule ^link/([a-zA-Z0-9_-]+)/([0-9]+)\.html$ sub_index.php?link_id=$1
и код ссылки :
a href="link/title/id.html">
Я не могу успешно переписать свой url в желаемый формат и получить сообщение. Запрошенный URL не найден на сервере.
Также, когда я искал в других местах, я не видел места, название написано как «Трекинг в непале».
Мне интересно, нужна помощь
благодаря
Во-первых, ваш код перезаписи неверен:
RewriteRule ^link/([a-zA-Z0-9_-]+)/([0-9]+)\.html$ sub_index.php?link_id=$1
Ваш link_id равен $ 2, ваш заголовок – $ 1. Поэтому вы должны использовать:
RewriteRule ^link/([a-zA-Z0-9_-]+)/([0-9]+)\.html$ sub_index.php?link_id=$2
Затем вы должны использовать функцию slug для своего названия, так что это более дружелюбный URL. Я использую что-то вроде этого:
function slug($string, $spaceRepl = "-") { // Replace "&" char with "and" $string = str_replace("&", "and", $string); // Delete any chars but letters, numbers, spaces and _, - $string = preg_replace("/[^a-zA-Z0-9 _-]/", "", $string); // Optional: Make the string lowercase $string = strtolower($string); // Optional: Delete double spaces $string = preg_replace("/[ ]+/", " ", $string); // Replace spaces with replacement $string = str_replace(" ", $spaceRepl, $string); return $string; }
slug("Trekking in Nepal")
будет trekking-in-nepal
, поэтому ваша ссылка будет:
/link/trekking-in-nepal/6.html
Затем он должен работать с вашим кодом перезаписи.
Кроме того, мне нравится переписывать мои ссылки следующим образом:
/link/trekking-in-nepal-6.html
Для этого я использую следующее:
RewriteRule ^link/([a-zA-Z0-9_-]+)-([0-9]+)\.html$ sub_index.php?link_id=$2
Удачи!
Пытаться:
RewriteRule ^link/([a-zA-Z0-9_- ]+)/([0-9]+)\.html$ sub_index.php?link_id=$2
Однако вы должны использовать rawurlencode
когда вы rawurlencode
заголовок, чтобы он работал правильно в любом браузере.