使用子目录中的.htaccess重定向URL

时间:2012-08-31 05:35:49

标签: .htaccess mod-rewrite url-rewriting

我有一个名为“blog”的子目录。我想在Web浏览器中访问此目录时清除URL。当我输入

时我想要那个
www.example.com/blog/index.php?id=1

webbroswer必须显示如下:

www.example.com/blog/posts/1

当没有子目录时我成功实现了这个,但在子目录的情况下,它显示了404错误。

这是我在.htaccess文件中完成的工作,以便在我在 root 目录(而不是在子目录中)中实现它时使用它。

RewriteEngine On
RewriteRule ^posts/([^/]*)$ /index.php?id=$1 [L]

我在index.php文件中写了我的网址

echo '<a href="www.example.com/posts/' . $row['id'] . '">' .  $row['title']  . '</a>';

但问题是当我尝试在名为“blog”的子目录中实现同样的事情时,它向我显示404错误。

我在rule中尝试了此.htaccess。但它没有用。

RewriteCond %{REQUEST_URI} !^/blog/.*$
RewriteRule ^(.*)$ /blog/$1 [L]

我将.htaccess文件保存在名为blog的子目录中。

我在StackOverflow中尝试了很多问题,但似乎没有一个能解决我的问题。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

为您拥有的规则添加rewwrite基础:

RewriteEngine On
RewriteBase /blog/
RewriteRule ^posts/([^/]*)$ index.php?id=$1 [L]

这些将位于目录/blog/

中的htaccess文件中

并确保在index.php中生成如下链接:

echo '<a href="www.example.com/blog/posts/' . $row['id'] . '">' .  $row['title']  . '</a>';