我正在为我的网站寻找一套简单的规则和重定向。我尝试了太多组合,以至于我开始感到困惑。
我不确定如何设置。通常,如果没有 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
,,product2
product3
并且我还在一个名为的目录中保存了这些文件products
:
product1.php
,,product2.php
product3.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