我对mod_rewrite有疑问。我知道在htaccess中我可以做<IfModule>
,但在PHP中呢?在html中,我正在写出projects/24
之类的链接,这些链接确实是action=projects&id=24
。如果有人安装此应用程序的服务器没有mod_rewrite,那么在PHP中如何将链接更改为GET vars?
答案 0 :(得分:3)
修改强> 我不确定哪个差点投了正确的答案,但他显然不能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
与一个或多个根脚本结合使用,以获得干净的网址。您将需要使用它,例如+MultiViews
或SetHandler
或DefaultType
和ForceType
(可用于构建扩展的php脚本)。 [1]
但是,如果没有启用mod_rewrite,那么这些指令通常也是不允许的指令。
[1]不要忘记使用FilesMatch部分来限制效果,或者再次在子目录中禁用它。 子>
答案 3 :(得分:-1)
我不确定你最终会得到什么,但这可能会让你朝着正确的方向前进:
http://www.tutorio.com/tutorial/php-alternative-to-mod-rewrite-for-se-friendly-urls
当然还有其他问题,最大的问题是在搜索引擎中缓存和索引这些类型的URL。