mod_rewrite 和 PHP 扩展出现问题 - 帮助制作正确的 .htaccess 文件

mod_rewrite 和 PHP 扩展出现问题 - 帮助制作正确的 .htaccess 文件

我正在为我的网站寻找一套简单的规则和重定向。我尝试了太多组合,以至于我开始感到困惑。

我不确定如何设置。通常,如果没有 mod-rewrite,我会使用相对路径链接到文件:

<a href="link.php">Link</a>

如果它在同一个目录中。

现在我想用这个:

<a href="link">Link</a>

如果你访问这个页面:

localhost/mysite/link

它会带你到正确的地方,那就是:

localhost/mysite/link.php

但是,我希望它也能在许多目录级别深处工作:

localhost/mysite/group/link2

将会去:

localhost/mysite/group/link2.php

和:

localhost/mysite/group/section/link3

将会去:

localhost/mysite/group/section/link3.php

但是在所有这些情况下,如果有人输入以下内容:

localhost/mysite/group/section/link3.php

在 URL 栏中,它会显示以下内容:

localhost/mysite/group/section/link3

谢谢

编辑

我认为我遇到的问题的一部分是我的站点根目录中有这些目录:

product1,,product2product3

并且我还在一个名为的目录中保存了这些文件products

product1.php,,product2.phpproduct3.php

.htaccess直到我将这些文件名更改为其他名称(与目录名称不同)后,文件才正常工作。这合理吗?这是预期行为吗?

编辑2

我确信有人会像我写这个问题时一样来这篇文章寻求帮助。这里和 stackoverflow.com 上都有很多关于 mod_rewrite 的好答案。我建议通读这些答案,并在测试实例上尝试这些条件和规则,以掌握它们。

我还意识到,频繁清除浏览器缓存并激活 RewriteLog 对于解决此问题至关重要。例如:

RewriteLog“rewrite.log”RewriteLogLevel 7

玩得开心

答案1

您可以使用 .htaccess 来实现这一点。实现此目的的正确代码如下:

RewriteEngine 开启

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME}.php -f

重写规则^(.*)$ $1.php

相关内容