对于一个小型的PHP Web应用程序,我想立即开始使用漂亮的链接。因此,我在我的应用程序的基本目录中添加了一个带有 mod_rewrite 的.htaccess,以重定向到三个级别的"目录"到index.php文件,将目录作为参数。
RewriteEngine on
RewriteBase /appdirectory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)(/([^/]*)(/([^/]*))?)?$ ./index.php?id1=$1&id2=$3&id3=$5
这非常有效,我注意到的唯一缺陷是不再找到相对路径在PHP / HTML文件中引用的资源。这并不奇怪,因为浏览器正在解析HTML,浏览器只知道用户提交给服务器的美化URL。我能够使用HTML基本标记解决这个问题。我认为相对链接是一个非常优雅的解决方案,并且肯定希望坚持使用它们。
要使应用程序可以安装在网络服务器的子目录中,我还必须在我的.htaccess文件中添加 RewriteBase 。显然,RewriteBase和HTML库对我的应用来说总是一样的。
我看到的可用性问题是,想要安装应用程序的用户需要将RewriteBase和HTML库设置为他或她服务器上的子目录。
有没有办法以某种方式同步这两个属性?你知道其他任何更方便用户的解决方案吗?有没有办法通过使用包含install子目录的PHP变量来解决这个问题,甚至可以以某种方式为mod_rewrite和HTML自动检测它?