codeigniter 中的友好 url 以及 url 中的变量
我正在使用 Codeigniter 创建一个网站,并且特定产品页面的 URL 类似于 http://www。 domain.com/products/display/$category_id/$product_id/$offset
$offset 用于在使用 Codeigniter 的分页库时限制每页显示的页数。
我希望如何使我的 URL 更加人性化,例如 http://www.domain.com/< /a>$category_name/$product_name/$offset 即。 http://www.domain.com/weapons/proton-canon/3
谁能指出我的一般方法?我刚刚开始学习 codeigniter,正在开发我的第一个项目
I'm making a site using Codeigniter and my URL for a particular product page is like http://www.domain.com/products/display/$category_id/$product_id/$offset
$offset is used for limiting the number of pages shown per page when using the Codeigniter's Pagination library.
How I want to make it such that my URL is something more human friendly, like http://www.domain.com/$category_name/$product_name/$offset ie. http://www.domain.com/weapons/proton-canon/3
Can anyone point me the general approach? I just started learning codeigniter and is working on my first project
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用通常所说的 URL slug 来实现此目的。
在表中添加一个名为“url_slug”或类似字段的新字段。现在您需要为每个产品创建一个 slug,并将其存储在此字段中。
CI 在 URL 帮助器中有一个函数 -
url_title($string)
它将接受一个字符串,并将其转换为在 URL 中使用。例如,
我的产品名称
将变为my_product_name
。现在,在您的方法中,您可以 - 保持
product_id
不变,使用它作为方法的参数来显示特定产品,并使用 slug 来实现人类友好的链接,或者您可以只使用url_slug
引用产品。您的网址可能类似于:
www.domain.com/$category_name/$product_id/my_cool_product/$offset
,也可能类似于
www.domain.com/$category_name/my_cool_product/$offset
没有 ID。选择是你的,但 url_slug 可能会改变 - ID 不会。这可能会对 SEO 产生影响。
无论如何,您的方法需要类似于:
然后您可以像上面一样使用 URL。
您还需要使用 URI 路由,因为上面的示例将尝试查找名为
$category_name
的控制器和名为my_cool_product
的方法,这当然不存在。请参阅URI 路由了解更多信息。
You can use what's generally known as a URL slug to achieve this.
Add a new field to your table, called "url_slug" or similar. Now you will need to create a slug for each product, and store it in this field.
CI has a function in the URL helper -
url_title($string)
which will take a string, and convert it for use in URL's.For example
My product name
would becomemy_product_name
.Now, in your method, you can either - keep the
product_id
intact, use this as a parameter for your method to show specific products, and use the slug for human friendly links, or you can just use theurl_slug
to refer to products.Your URL may look like:
www.domain.com/$category_name/$product_id/my_cool_product/$offset
or it could look like
www.domain.com/$category_name/my_cool_product/$offset
with no ID. the choice is yours, but the url_slug may change - the ID won't. Which may have SEO impacts.
Regardless, your method needs to look something like:
You can then use URL's like the above.
You will need to use URI routing as well, as the example above will attempt to look for a controller called
$category_name
and a method calledmy_cool_product
, which will of course not exist.See URI Routing for further info.