Php Apache URL重写如何

Php 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

我从未接触过regex或apache重写之类的东西,但我为一位客户做过一个大型电子商务网站,他刚刚问我是否可以为他的商店重写URL。我有两个我需要的,如果有人能告诉我是否有可能重写他想要的,那将是非常有帮助的

产品详细信息URL当前为: 产品/细节/3/皇家蓝色合唱团

他希望它只是。。。 /皇家蓝色合唱团

第二个是分类页面。他们目前正在

类别/景观/唱诗堂

他希望他们只是 /唱诗堂

这可能吗?如果您想查看当前所做的事情,则该站点的完整url当前为(用户名alex,密码superman)。它在codeigniter中编程

目前,它有以下重写,以摆脱codeigniter 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 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