1

我有一个可以作为域/类别或域/类别/文章访问的动态网站,它重定向到域/index.php?category/article。

我面临的问题是我想使用文件中的相对路径。我设法为包含 dirname( FILE ) 做到了这一点,如

ini_set('include_path',  dirname(__FILE__) . '/include');

这工作正常。根据我将其更改为的目录,它也可以工作

ini_set('include_path', dirname(__FILE__) . '/../include'); (extra /../)

但是,如果我尝试对 img src、A href 或 php Header 执行相同的操作,虽然我得到了图像或链接的正确文件路径,但它们根本不起作用。好像我根本没有点击一样,什么都没有发生。单击通过 php 生成的链接:

print "<a href='" . dirname(__FILE__)  . strtolower(str_replace(" ", "", $row['pageSection'])) . "/" . strtolower(str_replace("", "-", $row['pageTitle'])) . "' alt=''  >";     

不起作用,即使 html 源代码读取为:

 <a href="C:\validpath\htdocs\domain/category/article>

如何创建相对于文件位置的 img、链接(和 php 标头)的路径,而不是 url,并使其工作?

旁注:如果我通过 domain/prettyurl/ 访问我的网站,即使我的 CSS 也会刹车,但如果我通过 domain/prettyurl(没有结束斜杠)访问,则不会,这很奇怪。

4

2 回答 2

0

让它在本地主机和在线上工作,这是我的设置:

1)你可以自己用 2)给我们新手一个更好的选择

我使用了zoranc上面所说的。例如,为了让 CSS 在 dynamic-pretty-url 页面上工作,我将其设置为:

<?php
print "<link href='http://" . $_SERVER['HTTP_HOST'] .'/' . dirname($_SERVER['PHP_SELF']) . "/CSS/main.css' rel='stylesheet' type='text/css' />";

?>

警告:上面的代码会产生诸如 Domain///CSS 之类的链接。我仍然需要过滤掉多余的斜线,但它甚至适用于 CSS 和其他所有内容(img、a、php 标头)

然后,每次我想这样做时,我都必须这样做:

  1. 创建动态链接
  2. 创建动态图像
  3. 即使是我的标题表单!由于始终包含我的标头,因此当您浏览漂亮的 url 时,您的表单不能有 action='header.php',因为它会尝试在您当前正在浏览的任何漂亮 url 上找到它(域/类别/article 等)。您必须使用 header='" php 解决方案,我们是讨论/header.php endphp。

    同样,请注意这会产生额外的斜线,您必须以某种方式将其删除。

    通过这种设置,您可以拥有一个可以在您的本地主机和任何 Web 主机上运行的站点,而无需更改代码,但是使用起来有些麻烦且容易出错。如果有人有更好的解决方案,请分享。

    这工作得很好,在我看来,这绝对比每次上传网站时都必须更改代码要好,我想这更容易出错。

    再次感谢佐兰克,真的很有帮助。

于 2012-07-28T18:21:30.610 回答
0

看起来你正在本地主机上运行你的 php 所以

dirname(__FILE__) 

正在返回一个目录,即“C:\validation...”

尝试使用

 "'http: //' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/include'"

作为您的包含路径

于 2012-07-28T02:22:41.430 回答