如何检测mod_rewrite是否可用?

时间:2011-11-27 09:29:51

标签: php mod-rewrite

美好的一天。我的应用程序中的链接有问题。我想使用“pretty-urls',所以我希望我的所有链接看起来像'www.sitename.com/controller/method'。所以我想通过一个函数打印我的所有链接,看起来像

function link($url_segments) {
  if(mod_rewrite_is_available) 
     return BASE_URL.$url_segments;
  else
     return BASE_URL."index.php".$url_segments;
}

但我无法理解如何检测服务器是否启用了重写模块。我找到了2个解决方案:

  1. 在配置中放置一些变量(就像codeigniter一样) $config["index_variable"]在我的函数中使用,但这意味着 所有我的客户都需要在配置时更改该行 在主机上安装应用程序
  2. 使用函数来检测mod_rewrite,就像apache_get_modules一样 我知道它可能不是某些主机上的avaibale,如果 服务器将是nginx?
  3. 所以我想知道,如何检测并打印我的链接。

    感谢大家的帮助。

2 个答案:

答案 0 :(得分:1)

你能不能只为你的客户提供.htaccess,这样当你上传文件时,它会打开重写模式?

答案 1 :(得分:1)

这可能非常棘手和困难,就个人而言,我会采用后备方法。

  1. 查看apache2handler已加载的模块(通过phpinfo()),看看mod_rewrite是否存在
  2. 尝试sudo apache2ctl -t -D DUMP_MODULES查看是否已加载mod_rewrite
  3. 尝试使用.htaccess文件查看一切是否正常。
  4. 尝试确定使用的服务器软件,并解析服务器的conf文件
  5. 启用最后没有mod_rewrite的情况,然后在安装软件后手动启用它。