2

我有一个名为“博客”的子目录。我想在 Web 浏览器中访问此目录时清除 url。所以我想在我打字的时候

www.example.com/blog/index.php?id=1

网络浏览器必须显示如下:

www.example.com/blog/posts/1

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

这是我在 .htaccess 文件中所做的,以使其在目录(而不是子目录)中实现它时工作。

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,但似乎没有一个能解决我的问题。任何帮助,将不胜感激。

4

1 回答 1

2

将重写基础添加到您拥有的规则中:

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

这些将在目录中的 htaccess 文件中/blog/

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

echo '<a href="www.example.com/blog/posts/' . $row['id'] . '">' .  $row['title']  . '</a>';
于 2012-08-31T05:54:47.777 回答