0

我有一个基于 PHP 的动态站点,我最近注意到它生成了很多这样的奇怪页面: http ://www.festivalsnap.com/festival/3151748-16th+Annual+Magnolia+Fest+/hotels/3151748-16th +年度+木兰花+巨星+/门票/酒店

网站架构应该是这样的 www.mysite.com/festival/ 然后每个事件有 4 个可能的子页面... /lineup /tickets /hotels /news

正如您从 URL 中看到的那样,它只会不断创建越来越多不需要的子页面。当我运行站点地图生成器时,它会一直运行下去并创建更多这些无意义的页面。

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

我不擅长 PHP,我的开发人员也不是很有帮助。有谁知道这可能是什么原因造成的?

编辑:主要活动页面来自一个名为festival.php 的文件,然后在该文件下有 4 个子页面 - lineup.php ticket.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
4

1 回答 1

1

这部分与您的生成器有关,部分与.htaccess 有关。该.*运算符非常激进,因此您的 .htaccess 文件中几乎所有festival/在 URL 后面某处包含连字符的内容都是有效 URL。

但这并不能解释为什么您的生成器会“找到”所有这些页面。必须在某个地方创建了一些不良链接,无论是在生成器内部还是在您网站页面上的链接中。

你能发布一些代码吗?

编辑: .htaccess 代码应该更窄 - 尝试(.*)([^/]*).

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

于 2013-11-02T03:23:56.473 回答