问题标题可能有点误导,但我想不出一个更好的方式来表达它.
确保PHP应用程序可以在任意数量的环境中运行(就超链接而言……)创建URL的最佳方法是什么?
我在应用程序根目录中的index.php引用了一个处理所有请求的base.php(控制器)文件.
所以我一直在使用:
$_SERVER['DOCUMENT_ROOT'] . "/url/to/file/i/want.php";
这是正确的方法吗,还是有更好的方法?这是有效的,因为每个请求都来自index.php文件……
最佳答案 这应该工作正常,或只是使用相对路径.
您还可以实现其他方法,例如,您可以将超链接设置为:
// this part could be established in a shared header/include/global variable for your scripts
$site_domain = 'http';
if ($_SERVER["HTTPS"] == "on") {$site[url][full] .= "s";}
$site_domain .= "://";
$site_domain =$site_domain .$_SERVER['SERVER_NAME'];
// you would then have links in your scripts coded as: $site_domain."/cleanurl/
$site_domain为您提供基本域引用,动态到托管脚本的任何位置,然后您可以创建链接:$site_domain.“/ cleanurl /”;
其中’cleanurl’是您希望加载的页面的基于上下文的引用(例如’news’,如www.mydomain.com/news/).
然后,您可以使用.htaccess和Apache mod_rewrite来处理这些URL随后指向的位置:
RewriteEngine On
RewriteRule ^cleanurl/$/url/to/file/i/want.php [NC,L]
因为相对路径是从.htaccess中的根目录使用的,所以一旦设置,您就不需要进行更改.
另一个好处是你最终得到了“干净”,“可读”的链接 – 如果你移动脚本所在的位置与文件结构有关,你就不必浏览链接到它们的所有脚本并编辑链接单独 – 您只需更改.htaccess中的一行.