htaccess将以.php结尾的任何网址重定向到索引

时间:2011-01-06 20:51:46

标签: php .htaccess mod-rewrite redirect

到目前为止,我已经设置了我的.htaccess:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1 [QSA]

我的index.php从/ pages加载文件,例如。 index.php?page = home将从pages / home.php加载页面内容

然而 - 如果有人去了pages / home.php页面加载没有标题等,这是不可取的。我可以添加什么来重定向任何以.php结尾的网址,只是将用户带到主页?

由于

2 个答案:

答案 0 :(得分:1)

^(.*)\.php$的单独RewriteRule(没有文件存在条件)应该有效。但为什么人们试图直接访问.php?如果没有充分的理由,目录中的拒绝可能是更好的选择。

(并且,正如@Col.Shrapnel评论,请注意包括注射。我希望你能过滤你的页面名称。)

编辑:包含注入:考虑如果某人给你一个有趣的页面名称会发生​​什么,例如page=http://foo.com/exploit,你的脚本会运行吗?那么page=/etc/passwdpage=/../../../etc/passwd呢,你会打印出密码文件吗? page=`mysqldump …`,您会提供数据库的副本吗?

答案 1 :(得分:0)

这应该将pages/anything.php重定向到index.php?page=anything

RewriteCond %{REQUEST_URI} \.php$
RewriteRule ^(.*/)?([^/]*)\.php$ /index.php?page=$2 [R=301,L]

请注意上面的安全提示。包括注射是不好的..