Сокращение URL, содержащего строки запроса - PullRequest
2 голосов
/ 05 июля 2011

Я использую Codeigniter (PHP Framework), и у меня есть URL-адреса, такие как http://www.mysite.com/age/21/gender/female/name/jamie/city/boston/userid/1234.

Можно ли сделать URL более SEO / более удобным для пользователя? Например, http://www.mysite.com/1234-Jamie-Boston и каким-то образом можно передавать значения, найденные в исходных строках URL-адресов, например age =>21 и gender => female?

.

Ответы [ 2 ]

3 голосов
/ 05 июля 2011

Я думаю, вы могли бы - используйте mod_rewrite, чтобы переписать ваш новый URL с http://www.mysite.com/1234-Jamie-Boston на http://www.mysite.com/user/1234. В вашем пользовательском контроллере загрузите с БД тот с идентификатором 1234 и установите все остальные его свойства

Или без mod_rewrite - вы можете изменить файл application/config/routes.php, введя в него следующую строку:

$route['(\d+)-.*'] = "users/display_user/$1";

Таким образом, ваши дружественные для SEO URL будут указывать на класс Users, метод display_users, и вы получите идентификатор в качестве параметра

2 голосов
/ 05 июля 2011

Способ, которым работает PHP, заключается в том, что если вы отправляете 15 параметров в функцию, которой требуется только два, то PHP может более или менее «проглотить» другие аргументы (они все еще доступны, но они не являются обязательными).В вашем случае я бы создал контроллер Users, возможно, с функцией отображения, которая принимает только один параметр - идентификатор пользователя.Таким образом, вы можете иметь /users/display/1234/whatever/you/would/like/zodiac_sign/stop_sign/favorite_letter/favorite%20punctuation/... Нужно ли мне продолжать?

Вы можете обойти потребность в контроллере / методе как часть вашего URL, используя файл конфигурации $ routs ... В этом случаеЯ не думаю, что user/display действительно повредит SEO.Я бы не использовал mod_rewrite для этого просто потому, что архитектура уже есть в CodeIgniter.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...