您认为最好将URL重写放在哪里?

时间:2009-06-24 12:08:44

标签: url-rewriting

在这个问题上,我是一个完全的菜鸟,我想知道在我放置代码时是否必须这样做:

  • 在虚拟主机/ apache conf文件中?
  • 在httaccess文件中?
  • 将所有网址重定向到单个入口点并使用脚本语言对其进行解析?

有什么利弊?

5 个答案:

答案 0 :(得分:3)

我倾向于选择.htaccess因为它更容易作为项目文件的一部分进行维护,不需要使Web服务器生效,并且通常比脚本级重写更快

答案 1 :(得分:2)

这取决于你想要做什么。

重写规则应该放在与目录/站点根目录相关的配置中,这通常是您的vhost配置或htaccess(取决于设置)。

如果您的重定向基于额外信息,例如将404与最近移动的网页的数据库匹配,或者将404-URI与某种搜索相匹配,则通过脚本执行此操作才有意义。

答案 2 :(得分:1)

好的,所以我把关于它的内容总结一下:

重定向的网址重写:

最好把它放在Apache配置中。使用.htaccess是最灵活的方式,但是你的Apache conf必须允许它,否则,在Vhost文件中设置重写。

资源管理的网址重写:

当关于管理未找到内容,访问权限或获取用于访问动态内容的干净URL时,您需要在应用程序的脚本文件中设置重写,因为您可以访问API以处理此类事物

所以这两种方式都是互补的,你通常会同时使用它们。

答案 3 :(得分:1)

如果您没有任何速度优化问题,那么目录中的.htaccess文件应该是最佳位置。如果您的网站托管在共享的webhotel或您的Web应用程序上,它也可以自行创建htaccess文件。

我个人更喜欢在virtualhost配置文件中拥有每个配置选项,但只有拥有root访问权限才有用。

答案 4 :(得分:0)

这取决于你是否还需要进行出站URL重写(在实际HTML页面中修改链接本身),在这种情况下,像MOD_REWRITE这样的工具不会为你做到这一点,你需要使用“内部”或“本机服务器端”工具,对于Java,您可以使用PrettyFacesRewrite之类的内容。

这些工具也可以执行相同类型的入站重写(例如将重定向发送到新页面,或转发到新的内部资源,以便用户不知道他们看到地址/ URL更改。

然而,我的一般经验法则是,如果在应用程序运行时需要提供URL重写规则,则应使用类似MOD_REWRITE的内容,但如果规则仅适用于该应用程序本身,那么它们属于在应用程序内部,您应该使用本机工具。