it-swarm.cn

实现URL重写的最快/最便宜的方法是什么?

相关的另一个问题 - 如果您需要尽快实现URL重写,您使用或了解的一些方法可以加快这一点?

2
Mark Henderson

我们设法在8小时内完成了数百种产品。这是我们的场景:

我们有:

  • 狗丑陋的URL充满了无意义的参数
  • 内部开发人员
  • 完全访问SQL数据库和模式
  • IIS6/ ISAPI重写 (但我们可以为其他人做到这一点)

选项1

我们的产品表看起来像这样:

ID | Product Name | Description | etc
-------------------------------------
001|Product 1     | This is...  | etc
002|Product 1     | This is...  | etc
003|Product 1     | This is...  | etc

所以我们编写了一个小批量程序,它将循环遍历products表并在httpd.ini文件中创建条目(ISAPI重写版本的.htaccess),这样我们最终得到一个文件像这样的数百个条目:

RewriteRule (/product-1/) /DLLFolder/Requester.dll?APPLICATION=MyApp&PROGRAM=Products&ARGUMENTS=-N001 [I,O,U] *请参阅免责声明

我们的产品不会经常更改,所以我们每次添加时都会手动重新运行。不优雅,但这是为了快速/便宜地完成它。

然后,在我们的链接打印到产品的任何地方,我们只是确保链接输出到他们的完整URL。

这总共花了大约8个小时。

选项2

单个通用URL重写规则,如下所示:

RewriteRule (/products/)(.*/)(.*) /DLLFolder/Requester.dll?APPLICATION=MyApp&PROGRAM=Products&ARGUMENTS=-N$3 [I,O,U] *请参阅免责声明

这意味着我们可以写:

/products/my/thing/whatever/the/hell/i/want/123

它会重写为正确的URL。然后,只需更改URL链接的输出即可。

*免责声明:我的正则表达式技巧非常生疏,我当场制作了这些技巧。他们可能是错的。你对实际正则表达式的看法可能会有所不同,但这个概念仍然存在。

2
Mark Henderson