我有一个基于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
答案 0 :(得分:1)
这部分与您的发电机有关,部分与.htaccess有关。 .*
运算符非常具有攻击性,因此您的.htaccess文件几乎说明包含festival/
的任何内容,后面的URL中的连字符是有效的URL。
但这并不能解释为什么你的发电机是"发现"所有这些页面;必须在某处创建一些不良链接,无论是在生成器内部还是在您网站上的页面链接中。
你可以发布一些代码吗?
编辑: .htaccess代码应该更窄 - 尝试用(.*)
替换([^/]*)
的每个匹配项。
至于PHP,不可能确切地说出发生了什么,但听起来发电机正在某处找到你网站上的链接并跟随它们,在这种情况下,站点地图生成器工作正常,但是你的内容有问题。检查您的日志,找到一个不正确的URL,并查看那里的用户引用的页面。这将告诉你在哪里寻找坏代码。