到目前为止,我已经设置了我的.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结尾的网址,只是将用户带到主页?
由于
答案 0 :(得分:1)
^(.*)\.php$
的单独RewriteRule(没有文件存在条件)应该有效。但为什么人们试图直接访问.php?如果没有充分的理由,目录中的拒绝可能是更好的选择。
(并且,正如@Col.Shrapnel评论,请注意包括注射。我希望你能过滤你的页面名称。)
编辑:包含注入:考虑如果某人给你一个有趣的页面名称会发生什么,例如page=http://foo.com/exploit
,你的脚本会运行吗?那么page=/etc/passwd
或page=/../../../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]
请注意上面的安全提示。包括注射是不好的..