我有一个文章数据库,网址如下:
person/albert-einstein/
(尾随斜线)
person/albert-einstein/1
(没有尾随斜线)
我想知道在Codeigniter 3中处理url尾随斜杠的最佳方法是什么?
这是我到目前为止所做的/测试:
echo site_url('person/albert-einstein/'); # http://localhost/person/albert-einstein
echo base_url('person/albert-einstein/'); # http://localhost/person/albert-einstein
echo site_url('person/albert-einstein/1'); # http://localhost/person/albert-einstein/1
echo base_url('person/albert-einstein/1'); # http://localhost/person/albert-einstein/1
然后我编辑了config.php
来设置:
$config['url_suffix'] = '/';
再次打印网址:
echo site_url('person/albert-einstein/'); # http://localhost/person/albert-einstein/
echo base_url('person/albert-einstein/'); # http://localhost/person/albert-einstein
echo site_url('person/albert-einstein/1'); # http://localhost/person/albert-einstein/1/
echo base_url('person/albert-einstein/1'); # http://localhost/person/albert-einstein/1
现在我可以选择site_url()
或base_url()
来打印带有斜杠或不带斜线的网址。但是现在根据我的观点,我必须非常小心我使用哪一个,而且我宁愿使用一个尊重我传递的url的函数,如果它有或不添加一个,如果它没有,则返回斜杠有它。
是的,我绝对可以扩展帮助程序并编写一个类似于print_url()
的函数来执行我想要的操作,但我想知道是否有一些我在这里缺少的东西。谢谢。
答案 0 :(得分:1)
您可以使用apache重写规则强制尾随斜杠:
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
要删除尾部斜杠,您可以使用:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [R=301,L]
我使用了.htaccess
个|__WEB-INF
|___ spring
|__app-config.xml
|___ views
|__footer.jsp
|__header.jsp
|__home.jsp
|__layout.jsp
|__menu.jsp
|___ tiles.xml
|___ web.xml
代码段。