Я довольно опытный программист, но когда дело доходит до RegEx и переписывает, я полный n00b. Я хочу конвертировать URL из
http://www.example.com/lookup.php?id=1
в
http://www.example.com/lookup/1/item/
где «item» ссылается на имя элемента в базе данных, которая просматривается.
Я использую LAMP (Linux, Apache, MySQL, PHP), и я не могу, на всю жизнь, понять, как конвертировать URL-адреса, чтобы они были дружественными к SEO.
Простой пример .htaccess:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^lookup/([a-z0-9\-]+)/item/?$ /lookup.php?id=$1 </IfModule>
Это будет соответствовать любой буквенно-цифровой (также признает тире) строку любой длины как «id». Вы можете ограничить это только числовым, изменив регулярное выражение на ([0-9]+)
.
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^lookup/([a-z0-9\-]+)/([a-z0-9\-]+)/?$ /lookup.php?id=$1&view=$2 </IfModule>
Это будет соответствовать /lookup/123/some-text/
to /lookup.php?id=123&view=some-text
Посмотрите на htaccess переписать URL! 🙂
Вот ваш пример:
RewriteRule ^lookup/(\d+)/(.*)$ /lookup.php?id=$1&name=$2
Когда вы lookup.php?id=123&name=my-product
доступ к lookup/123/my-product/
, он будет lookup.php?id=123&name=my-product
вызывать lookup.php?id=123&name=my-product
.
Вы хотите перенаправить со старого URL на новый? Или вы хотите читать в этих «дружественных» URL-адресах, а затем вести себя как старый URL-адрес?
Если это последний, попробуйте взглянуть на Net_URL_Mapper как способ разобрать и перенаправить эти ссылки довольно легко.