我从未接触过regex或apache重写的东西,但我为一位客户创建了一个大型电子商务网站,他刚刚问我是否可以为他的商店重写URL。我需要2个,如果有人能告诉我是否有可能重写他想要的内容,那将是一个很大的帮助
产品详细信息URL当前为:产品/细节/3/宝蓝合唱团偷走
他希望它只是。。。/皇家蓝合唱团偷走
第二个是分类页。他们目前是
类别/视图/唱诗班stoles
他希望他们只是/合唱团偷走
这可能吗?该网站的完整url当前为http://www.stoles.com/stoles(用户名亚历克斯,密码超人)如果你想看看目前做了什么。它在代码点火器中编程。
目前,它有以下重写,以摆脱代码点火器URL中的index.php。。。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
首先,类别url和产品详细信息url之间应该不同,可能是这样的:
product details : pd/royal-blue-choir-stole
category : /choir-stoles
但如果你想不加前缀,那么你可以将url与你的产品标题或类别名称相匹配。例如:
您有一个名称为"Choir Stoles"的类别,产品名称为"royal blue Choir Stokes">
现在您可以在htaccess中使用以下代码行:
RewriteRule /([a-z-]+)$ router.php?q=$1 [NC,L]
然后你可以在router.php中获得$_get['q'],并将"-"替换为空格,在数据库中搜索,找出它是类别还是产品,然后从数据库中获得信息<希望对你有所帮助。>
用于产品url(add-in-routes.php)(product/details/blah-blah-blah)
将路由中的值更改为
$route['product/:any'] = "product/details";
product ->controller
details -> action
对于类别url(类别/视图/诸如此类)
$route['catagory/:any'] = "catagory/details";
catagory ->controller
details -> action
http://ellislab.com/codeigniter/user-guide/general/routing.html
这是我真正感兴趣的事情。如果你的类别数量有限,不会经常更改,那么对类别路由进行硬编码似乎是合理的。
$route['choir-stoles'] = "shop/choir-stoles";
否则,如果类别不断变化,或者你想以同样的方式生产产品,那么你就必须搜索url中的任何值——可以是任何值。那么我想知道的是,如果你收到这样的请求,会发生什么样的预过滤
http://www.stoles.com/213as+dfjljWHATEVER
在转到数据库和控制器之前已停止。
是否应该在Routes中进行这种类型的筛选我们应该记录这种尝试吗?如果他们连续几次禁止IP?或者这是过于偏执而不值得关注?
现在的风格是把搜索值推到一个词后面,比如"产品"、"类别"等,但越来越多的客户会要求短网址,想出一些最佳实践会很酷。