我最近将我网站上的文件扩展名从.html切换到.php。因此,我想做以下事情:
将.html文件重定向到其.php等效文件
从所有网址
无扩展网址应该有效(例如,foo.com/bar应显示位于foo.com/bar.php的网页)
这是我目前的方法,我从各种来源拼凑而成:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\.html$ $1.php [L]
RewriteRule ^([^\.]+)$ $1.php [NC,L]
我的方法至少有三个问题:
当有人试图访问foo.domain / bar.php时,.php扩展名仍然存在(但值得注意的是,foo.domain / bar 显示正确的.php页面)< / p>
当.html文件的请求显示正确的.php页面时,.html扩展名仍然存在(我不想展示扩展名)
现在无法在URL中包含index.php来访问目录(例如,foo.com / bar /会引发404错误)
一定要明显,我发现mod_rewrite真的很难。任何帮助将不胜感激。
答案 0 :(得分:0)
我的头脑中
RewriteEngine On
RewriteBase /
Options -MultiViews
# redirect /foo.html to /foo
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)\.html$ $1 [L,R=302]
# redirect /foo.php to /foo
RewriteCond %{THE_REQUEST} \.php
RewriteRule ^([^\.]+)\.php$ $1 [L,R=302]
# rewrite /foo to /foo.php if and only if /foo.php exists
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^([^\.]+)$ $1.php [NC,L]