【问题标题】:mod_rewrite and file pathsmod_rewrite 和文件路径
【发布时间】:2011-08-31 20:41:51
【问题描述】:

我在我的 haccess 中使用 mod_rewrite 来制作干净的 URL。工作目录为webroot/subdir,htaccess 位于subdir

我的主文件夹可以正常工作

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^projects/([0-9]+)$ ?action=projects&id=$1
RewriteRule ^projects ?action=projects

RewriteRule ^clients ?action=clients
RewriteRule ^admins ?action=admins
RewriteRule ^settings ?action=settings

所以这些链接就像webroot/subdir/projectswebroot/subdir/settings 一样有效。

我的问题出现在我必须添加 id 的 projects 行上。当我单击一个类似以下内容的链接时:webroot/subdir/projects/284,我所有的样式表和图像都会中断。我的 CSS 设置如下:

<link rel="stylesheet" href="resources/css/reset.css" />
<link rel="stylesheet" href="resources/css/main.css" />
<link rel="stylesheet" href="resources/css/buttonPro.css" />

有没有办法解决这个问题?我的重写规则有错吗?

【问题讨论】:

  • 更好地为每个项目设置虚拟主机,然后在您的hosts 文件中创建一些假域名(例如project1.dev)。然后您可以在没有/webroot/subdir 前缀的情况下访问您的特定项目。在任何情况下——@animuson 关于你应该如何定义你的 css/js/images 的方式是正确的。
  • 是的,我继续做了这样的事情&lt;link rel="stylesheet" href="/&lt;?php echo INSTALL_DIR; ?&gt;/resources/css/reset.css" /&gt;

标签: .htaccess mod-rewrite relative-path


【解决方案1】:

假设您的resources 文件夹也在webroot/subdir 中,您需要将链接设为绝对路径。当页面更改为projects/([0-9]+) 时,您的工作目录现在变为webroot/subdir/projects,即使路径正在被重写,因此它正在尝试在不存在的webroot/subdir/projects/resources 处查找您的样式表。

/ 添加到位置的开头应该可以:

<link rel="stylesheet" href="/resources/css/reset.css" />
<link rel="stylesheet" href="/resources/css/main.css" />
<link rel="stylesheet" href="/resources/css/buttonPro.css" />

如果您的资源文件夹位于 home/root 目录之外,则需要指定该目录的完整路径,如下所示:

<link rel="stylesheet" href="/webroot/subdir/resources/css/reset.css" />
<link rel="stylesheet" href="/webroot/subdir/resources/css/main.css" />
<link rel="stylesheet" href="/webroot/subdir/resources/css/buttonPro.css" />

【讨论】:

  • 我在路径前尝试了/,这确实使它从webroot开始。我想避免必须定义 subdir 的路径,因为它可以是任何文件夹名称(这是人们将下载并安装在自己的服务器上的 web 应用程序)。我可以在我的 config.php 中添加一行来说明目录是什么,然后我想从那里调用它。
  • @Ronnie:是的,大多数应用程序和其他软件都有一行来指定路径。
猜你喜欢
  • 2011-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-07
  • 1970-01-01
  • 1970-01-01
  • 2010-12-11
相关资源
最近更新 更多