我有一个基于动态PHP的站点,最近我注意到它生成了许多奇怪的页面,比如:http://www.festivalsnap.com/festival/3151748-16th+Annual+Magnolia+Fest+/hotels/3151748-16th+Annual+Magnolia+Fest+/ticket/hotels
网站架构应该是这样的www.mysite.com/节日/,然后有4个可能的子页面为每个事件./lineup /tickets /hotels /news
正如您可以从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发布于 2013-11-02 03:23:56
这部分与您的生成器有关,部分与.htaccess有关。.*操作符非常具有侵略性,所以您的.htaccess文件中的任何包含有连字符的festival/的内容都是有效的。
但这并不能解释你的生成器为什么要“找到”所有这些页面;在某个地方一定有一些不好的链接正在创建,不管是在生成器内部,还是在站点页面上的链接中。
你能贴些密码吗?
编辑:-- .htaccess代码应该更窄--尝试用([^/]*)替换(.*)的每一次出现。
至于PHP,不可能确切地说出到底是怎么回事,但听起来好像生成器正在您的站点上找到这些链接并跟踪它们,在这种情况下,sitemap生成器工作正常,但是您的内容有问题。检查您的日志,找到一个不正确的URL,看看哪个页面引用了用户。这将告诉你在哪里寻找坏代码。
https://stackoverflow.com/questions/19738102
复制相似问题