在以.php结尾的网址后,如何防止添加其他字符串?

时间:2012-11-23 09:05:43

标签: php url

我们网站的团队刚刚发现,任何用户都可以在以.php扩展名结尾但仍访问同一原始网页的网址后添加斜杠'/',然后添加任何字符串。

例如: 我可以访问www.mydomain.com/index.php:

  • www.mydomain.com/index.php/test
  • www.mydomain.com/index.php/test/123
  • www.mydomain.com/index.php/wqeqwew/2234dwd

(注意:index.php /之后的其他字符串在服务器中不存在,它们只是一些垃圾)

另一个问题是,对于我的动态网址,我总是可以在我的域名和第一个参数之间添加一个不存在的php文件。

例如: 我可以访问www.mydomain.com/product/one:

  • www.mydomain.com/test.php/product/one
  • www.mydomain.com/imnothere.php/product/one

如何防止这种情况发生?如何处理?这在SEO或安全方面是一个严重的问题吗?我希望每当在浏览器中输入或点击这些类型的URL时,网站都会返回404错误。

非常感谢任何帮助。谢谢!

修改

我想我已经修好了。对于第一个问题,我在.htaccess中添加了AcceptPathInfo Off。对于第二个问题,我刚刚在我的RewriteRule之前为我的动态网址添加了^,例如RewriteRule ^product/(.*)$这样任何人都无法在域名和第一个参数之间添加额外的字符串。谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

  

如何防止这种情况发生?如何处理?

这是由Apache的AcceptPathInfo指令引起的。您可以将其关闭 - 如果相应地配置了服务器,您只需要一个.htaccess文件。

  

这在SEO或安全方面是一个严重的问题吗?

我想不出一个可能是一个严重问题的方式。它通常在大多数处理程序中默认启用,并且通常用作“穷人的mod_rewrite”(一种提供看起来很奇特的URL的方法)。

答案 1 :(得分:0)

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?url=$1 [PT,L]