Php Apache URL重写如何
我从未接触过regex或apache重写之类的东西,但我为一位客户做过一个大型电子商务网站,他刚刚问我是否可以为他的商店重写URL。我有两个我需要的,如果有人能告诉我是否有可能重写他想要的,那将是非常有帮助的 产品详细信息URL当前为: 产品/细节/3/皇家蓝色合唱团 他希望它只是。。。 /皇家蓝色合唱团 第二个是分类页面。他们目前正在 类别/景观/唱诗堂 他希望他们只是 /唱诗堂 这可能吗?如果您想查看当前所做的事情,则该站点的完整url当前为(用户名alex,密码superman)。它在codeigniter中编程 目前,它有以下重写,以摆脱codeigniter URL中的index.phpPhp Apache URL重写如何,php,apache,codeigniter,mod-rewrite,url-rewriting,Php,Apache,Codeigniter,Mod Rewrite,Url Rewriting,我从未接触过regex或apache重写之类的东西,但我为一位客户做过一个大型电子商务网站,他刚刚问我是否可以为他的商店重写URL。我有两个我需要的,如果有人能告诉我是否有可能重写他想要的,那将是非常有帮助的 产品详细信息URL当前为: 产品/细节/3/皇家蓝色合唱团 他希望它只是。。。 /皇家蓝色合唱团 第二个是分类页面。他们目前正在 类别/景观/唱诗堂 他希望他们只是 /唱诗堂 这可能吗?如果您想查看当前所做的事情,则该站点的完整url当前为(用户名alex,密码superman)。它在co
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 Steel”。
现在,您可以在htaccess中使用以下代码行:
RewriteRule /([a-z\-]+)$ router.php?q=$1 [NC,L]
然后,您可以在router.php中获取$_get['q'],并用空格替换“-”,在数据库中搜索,找出是类别还是产品,然后从数据库中获取信息。希望这会有帮助 用于产品url(add-in-routes.php)(product/details/blah-blah-blah-blah-blah) 将routes中的值更改为
$route['product/:any'] = "product/details";
product ->controller
details -> action
对于类别url(类别/视图/诸如此类)
这是我非常感兴趣的事情。如果您的类别数量有限,而且不会经常更改,那么对类别路由进行硬编码似乎是合理的
$route['choir-stoles'] = "shop/choir-stoles";
否则,如果类别一直在变化,或者如果你想以同样的方式制作产品,那么你就必须对url中的任何值进行搜索——可以是任何值。那么我想知道的是,如果你收到这样的请求,会发生什么样的预过滤呢
http://www.stoles.com/213as+dfjljWHATEVER
它在转到数据库和控制器之前停止
这种类型的过滤是否应该发生在路由中?我们应该记录这种尝试吗?如果他们连续几次禁止知识产权?或者这是过度偏执,而不是一个问题
现在的风格是将搜索值放在“产品”、“类别”等一个词后面,但是越来越多的客户会要求短URL,想出一些最佳做法会很酷 了解当前重写的内容将非常有用。使用当前重写编辑问题。使用apache mod重写不可能只删除前2个uri段吗?
http://www.stoles.com/213as+dfjljWHATEVER