2014-08-28 73 views
0

我是新的Web开发的行业。目前正在研究一个客户的五个基于内容的网站。这些网站使用Laravel 4进行设计,并使用无法访问配置的共享主机。我需要从所有的文章页面删除“的index.php”,使他们的搜索引擎优化的目的干净的URL。我面临两个问题。这些问题在性质上似乎是相似的,因此在同一问题中引​​用了这两个问题。谷歌索引两个网址可以在同一页 - 有和无的index.php

对于插件域 - 我将域的文档根目录更改为Laravel的“公共”文件夹。然后添加下面的代码在.htaccess文件,使清洁的网址不带“的index.php”部分

Options -MultiViews 
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /index.php?/$1 [L] 

但如果URL被直接输入到浏览器的地址栏的代码工作正常。问题是,现在,当我搜索使用网站我在Google.com网站:mysite.com它显示某些页面没有,而一些在用的index.php页面的URL在index.php部分URL。最糟糕的是,一些页面出现两次 - 一次在URL和第二次的index.php没有的index.php

例如搜索结果将包含带有这样的URL的页面 -

  www.mysite.com/index.php/article-1-content 
      www.mysite.com/article-1-content 

如果我没有错,这会导致重复的内容。此外,当我通过具有index.php的URL打开文章页面时,该页面上的所有其他URL(如内部链接和边栏文章)也会在其URL中显示index.php。我应该怎么做才能彻底删除网址和谷歌索引中的index.php。请帮忙。

对不起,让这个问题太长时间,但我的第二个问题似乎是类似性质的 -

初级域 -我增加了整体的的public_html站点代码,然后添加这块代码在的public_html .htaccess文件更改文档根

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^primarydomain.com$ [NC,OR] 
RewriteCond %{HTTP_HOST} ^www.primarydomain.com$ 
RewriteCond %{REQUEST_URI} !public/ 
RewriteRule ^(.*)$ public/$1 [L] 

并且还代码在公用文件夹.htaccess文件删除的index.php部分 - (相同于插件域)。问题是,在谷歌搜索每一个文章页面的URL看起来像这样

www.primarydomain.com/article-1-content
www.primarydomain.com/public/index出现两次。 php/article-1-content

谷歌正在用'public/index.php'部分为URL编制索引。我应该怎么做才能彻底摆脱这些不那么干净的URL。

感谢您容忍这么长的问题:)任何帮助将不胜感激。 此致敬礼。

+0

每当URL匹配'index.php'您应该执行'301'重定向。最终,Google会删除所有与index.php相关的链接,并且不会因重复内容而受到处罚。 – Ohgodwhy 2014-08-28 16:29:07

+0

感谢@Ohgodwhy如此快速的回应。我会经历301次重定向。我对301重定向有一点疑问。我曾经在某处看到过多的重写和重定向会影响网站的性能。由于我正在处理的这些网站将逐渐拥有数千个内容页面。将这样的重定向计为每个页面的单个重定向或不同的重定向。另外,一旦我将301重定向代码添加到.htaccess,我是否需要我在问题中提到的重写代码,或者我可以将其删除。 – kruxatur 2014-08-28 16:53:15

+0

我怀疑你会看到在这个阈值的任何重大打击,因为'301'重定向只是产生一个'apache forker进程'来处理请求,然后将其传递到一个新的页面,所以PHP解释器是从来没有跑。你可能会谈论成千上万的301人,并拥有庞大的访客群。你可以保留上面的代码。 – Ohgodwhy 2014-08-28 16:55:18

回答