【发布时间】:2012-03-09 02:46:34
【问题描述】:
我的 .htaccess 中有以下代码:
RewriteEngine On
RewriteRule ^/?([^/\.]+)/?$ $1.php [L]
RewriteRule ^/?([^/\.]+).php$ $1/ [R,L]
RewriteRule ^/?([^/\.]+)/?$ $1.php [L] 工作正常。这样做的目的是获取http://www.example.com/whatever 之类的网址,并将页面读取为http://www.example.com/whatever.php。
但是,我想做的是获取像http://www.example.com/whatever.php 这样的网址并自动将其发送到http://www.example.com/whatever,因此是代码的第二行。但是,这是行不通的。它现在所做的是,一旦遇到以.php 结尾的链接,URL 就会变为http://localhost/C:/Sites/page/whatever/,并拉出403: Forbidden 页面。
我只想知道我能做什么,以便http://www.example.com/whatever.php 将被读取为http://www.example.com/whatever,并且如果在 URL 栏中输入http://www.example.com/whatever.php,它将自动重定向到http://www.example.com/whatever。
这有意义吗?
编辑
好的,看来我不太清楚.. 基本上,我希望 /whatever/ 读作 whatever.php 而 URL 仍保持为 /whatever/,对吗?但是,如果 URL 是 /whatever.php,我希望它实际上 重定向 用户 URL 到 /whatever/,然后再次将其读取为 whatever.php。这可能吗?
【问题讨论】:
标签: apache .htaccess mod-rewrite redirect clean-urls