Как преобразовать строку запроса PHP в косой чертой?

Я довольно опытный программист, но когда дело доходит до 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 как способ разобрать и перенаправить эти ссылки довольно легко.