首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在php中生成弹状体

如何在php中生成弹状体
EN

Stack Overflow用户
提问于 2010-02-26 10:08:16
回答 4查看 768关注 0票数 0

我试图编写一个脚本,它可以像这样以段式方式重写urls:

http://www.mysite.com/mystorytitle/

我在我的密码里这么做:

代码语言:javascript
运行
复制
 RewriteRule ^(.*)\/$  app=News&file=article&title=$1  [L] 

在我的php代码中,我从故事的标题中创建了一个片段,如下所示:

代码语言:javascript
运行
复制
$slug_title = mysql_real_escape_string($mtitle);
$show= "<a href=\"$slug_title/\">$mtitle</a>";

现在一切都很好,除非当我点击段式链接时,它会转到页面,但没有任何样式、javascripts和图像。

我确信问题是因为css文件的路径和.它被更改为一个级别

当我走在这条路上:http://www.mysite.com/ایمیل/

因此,如果需要css文件的页面如下:

代码语言:javascript
运行
复制
<link rel="StyleSheet" href="includes/NAV.css" type="text/css" />

有一个级别改变了,要做到这一点,我应该回到一个级别,因为:

代码语言:javascript
运行
复制
<link rel="StyleSheet" href="../includes/NAV.css" type="text/css" />

我想,这是一个文件夹,而不是重新编写的路径。

但是我确信应该有另一种方法使这个脚本在不改变所有路径的情况下运行()。

提前感谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-26 10:13:22

您应该在基本URL (大部分时间为正斜杠,但不是总是)前面。

您可以按以下方式获得它(即使您的站点驻留在目录中,也可以使用通用表达式):

代码语言:javascript
运行
复制
$baseUrl = rtrim((string)dirname($_SERVER['SCRIPT_NAME']), '/\\') . '/';

然后你会写:

代码语言:javascript
运行
复制
<link rel="StyleSheet" href="<?php echo $baseUrl ?>includes/NAV.css" type="text/css" />

另一种可能是在head中使用基本标记:

代码语言:javascript
运行
复制
<base href="<?php echo $baseUrl ?>" />

这样做的优点是只更改代码中的一行。

您可以走得更远,并制定实用方法来完成以下操作:

代码语言:javascript
运行
复制
function baseUrl($url = '', array $query = null, $fragment = null)
{
    static $baseUrl = rtrim((string)dirname($_SERVER['SCRIPT_NAME']), '/\\') . '/';

    if ($query !== null) {
        $url .= '?' . http_build_query($query);
    }

    if ($fragment !== null) {
        $url .= '#' . (string)$fragment;
    }

    $url = $baseUrl . $url;
    $url = trim(str_replace('\\', '/', (string)$url));

    return $url;
}
票数 1
EN

Stack Overflow用户

发布于 2010-02-26 10:12:03

正如您已经写过的,这将发生,因为浏览器认为您位于一个以您的代码片段命名的不同目录中。

您必须对CSS URL做一些事情,或者像您已经做的那样引用它们相对../includes/,或者使用绝对引用/includes/NAV.css (域部分是可选的)。

如果这是一个PHP项目,我将创建一个包含web根目录的中央设置文件:

代码语言:javascript
运行
复制
define("SITE_WEBROOT", "http://www.domain.com");

并引用与该设置相关的所有资源:

代码语言:javascript
运行
复制
<link rel="stylesheet" type="text/css" 
      href="<?php echo SITE_WEBROOT; ?>/includes/NAV.css">
票数 2
EN

Stack Overflow用户

发布于 2010-02-26 10:15:16

只需在所有资源URI之前添加一个正斜杠。就像/static/image.png。这将使浏览器从根请求它(即。www.site.com/path)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2340781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档