如果服务器没有mod_rewrite

时间:2011-09-01 20:24:24

标签: php apache mod-rewrite

我对mod_rewrite有疑问。我知道在htaccess中我可以做<IfModule>,但在PHP中呢?在html中,我正在写出projects/24之类的链接,这些链接确实是action=projects&id=24。如果有人安装此应用程序的服务器没有mod_rewrite,那么在PHP中如何将链接更改为GET vars?

4 个答案:

答案 0 :(得分:3)

使用apache_get_modules()

修改 我不确定哪个差点投了正确的答案,但他显然不能rtm。

以下是一些代码来说明:

<?php

if (in_array("mod_rewrite", apache_get_modules())) {
   echo 'has rewrite';
} else {
   echo 'no rewrite';
}

?>

使用此选项来决定您要编写哪种类型的链接。

答案 1 :(得分:0)

  

如何在PHP中将链接更改为GET变量?

使用变量制作所有链接 并根据一些配置设置选择它们的外观,就像Wordpress一样。

答案 2 :(得分:0)

有一些解决方法使用ErrorDocument并在userland(= php脚本)中处理失败的请求。但这会(1)污染日志,(2)不适用于POST请求(取决于服务器)。不会那么烦。

一种实用的替代方法是将PATH_INFO与一个或多个根脚本结合使用,以获得干净的网址。您将需要使用它,例如+MultiViewsSetHandlerDefaultTypeForceType(可用于构建扩展的php脚本)。 [1]
但是,如果没有启用mod_rewrite,那么这些指令通常也是不允许的指令。

[1]不要忘记使用FilesMatch部分来限制效果,或者再次在子目录中禁用它。

答案 3 :(得分:-1)

我不确定你最终会得到什么,但这可能会让你朝着正确的方向前进:

http://www.tutorio.com/tutorial/php-alternative-to-mod-rewrite-for-se-friendly-urls

当然还有其他问题,最大的问题是在搜索引擎中缓存和索引这些类型的URL。