PHP站点生成奇怪的页面

时间:2013-11-02 01:46:04

标签: php html .htaccess

我有一个基于PHP的动态网站,我最近注意到它生成了很多奇怪的页面,如下所示: http://www.festivalsnap.com/festival/3151748-16th+Annual+Magnolia+Fest+/hotels/3151748-16th+Annual+Magnolia+Fest+/ticket/hotels

网站架构应该是这样的www.mysite.com/festival/,然后每个活动有4个可能的子页面... /阵容/门票/酒店/新闻

正如您从URL中看到的那样,它只是不断创建越来越多的不需要的子页面。当我运行一个站点地图生成器时,它将永远继续前进并创建更多这些毫无意义的页面。

它不应该比/ hotels页面更深入,但由于某种原因,它只是使用上述页面的任意组合添加越来越多的子页面。

我对PHP不好,我的开发人员不是很有帮助。任何人都知道可能导致这种情况的原因吗?

编辑: 主事件页面来自一个名为festival.php的文件,然后有4个子页面 - lineup.php tickets.php hotel.php和news.php从事件页面获取变量(事件标题,日期,位置,等)并用它来搜索门票,酒店等。

我注意到我基本上可以对URL进行任何操作,它会将其作为页面标题/事件标题的一部分添加。看起来.htaccess

会发生一些奇怪的事情

这是.htaccess代码:     RewriteEngine on     RewriteCond%{HTTP_HOST}!^ www.festivalsnap.com $ [NC]     RewriteRule ^(。*)$ http://www.festivalsnap.com/ $ 1 [R = 301,L]

RewriteRule festival/(.*)-(.*)/lineup$ lineup.php?eveid=$1&festival=$2
RewriteRule festival/(.*)-(.*)/news$ news.php?eveid=$1&festival=$2
RewriteRule festival/(.*)-(.*)/tickets$ ticket.php?eveid=$1&festival=$2
RewriteRule festival/(.*)-(.*)/hotels$ hotel.php?eveid=$1&festival=$2
RewriteRule festival/(.*)-(.*)/hotels/(.*)$ hotel.php?eveid=$1&festival=$2&hsort=$3
RewriteRule festival/(.*)-(.*)$ event_page.php?eveid=$1&festival=$2

RewriteRule artists/(.*)-(.*)$ artists.php?artid=$1&artname=$2

1 个答案:

答案 0 :(得分:1)

这部分与您的发电机有关,部分与.htaccess有关。 .*运算符非常具有攻击性,因此您的.htaccess文件几乎说明包含festival/的任何内容,后面的URL中的连字符是有效的URL。

但这并不能解释为什么你的发电机是"发现"所有这些页面;必须在某处创建一些不良链接,无论是在生成器内部还是在您网站上的页面链接中。

你可以发布一些代码吗?

编辑: .htaccess代码应该更窄 - 尝试用(.*)替换([^/]*)的每个匹配项。

至于PHP,不可能确切地说出发生了什么,但听起来发电机正在某处找到你网站上的链接并跟随它们,在这种情况下,站点地图生成器工作正常,但是你的内容有问题。检查您的日志,找到一个不正确的URL,并查看那里的用户引用的页面。这将告诉你在哪里寻找坏代码。