0

背景

尝试使用 Apache 的 mod rewrite 和 PHP 重新创建 StackOverflow 风格的漂亮 URL。

问题

这很好用:

<IfModule mod_rewrite.c>
  RewriteEngine on

  RewriteRule ([0-9]+)$ index.php?id=$1 [L]
</IfModule>

http://localhost/home/script/5诸如重定向到的URL http://localhost/home/script/index.php?r=5。CSS 内容加载完美。

像重定向这样的 URL http://24.68.226.186/recipes/recipe/5/seo-text,但是 CSS 文件的相对路径不正确:

<link rel="StyleSheet" hreF="css/theme.css" type="text/css" media="screen,print" id="css-theme" />

目录

脚本 (index.php) 的目录结构类似于:

htdocs/home/script
htdocs/home/script/.htaccess
htdocs/home/script/index.php
htdocs/home/script/css
htdocs/home/script/images

问题

您如何使用 mod rewrite 告诉 Apache 在提供文件时使用“脚本”目录而不是附加到 URL 的任何子目录?

换句话说,您将如何使用 mod rewrite 删除 URL 的“seo-text”部分并(1)确保它反映实际标题 [来自数据库];(2) 将浏览器重定向到新的 URL [如有必要];(3) 告诉 Apache 忽略 URL 中 ID 之外的所有路径?

我宁愿不在 CSS 中使用绝对路径。

谢谢!

4

1 回答 1

0

使用了洛根的建议:

<base href="/home/script/" target="_self" />

由于一个错误,这不适用于 IE8。

于 2012-04-08T22:49:11.627 回答