帮助解决简单的RewriteRule问题

时间:2010-12-13 01:08:46

标签: apache .htaccess mod-rewrite url-rewriting

我正在用apache在php上创建一个非常小的网站,5页。我在顶级目录中创建了五个php文件,index.php,random.php等。我想隐藏.php扩展名,所以我将以下内容放入我的.htaccess中:

RewriteRule ^random/?$ random.php

如果我访问www.example.com/random,我会看到我需要的页面,但是如果我访问www.example.com/random/(最后是斜线),则css和链接都是一个目录,即服务器认为我在/random/index.php,而不是/random.php。

我是RewriteRule的总菜鸟,所以提前谢谢!

1 个答案:

答案 0 :(得分:2)

对于实际执行HTTP重定向的尾部斜杠,您应该有一个单独的规则。例如:

RewriteRule ^random/$ /random [R=301,L]
RewriteRule ^random$ random.php

相对URL由浏览器处理,因此使用该斜杠,浏览器将会混淆。

大多数HTTP服务器实际上都会对目录名称进行此类重定向。也就是说,如果您转到http://example.com/foo/bar并且bar是一个目录,您将被重定向到/foo/bar/