我的目标是阻止用户输入.html以访问他们在我们网站上寻找的页面。在其他网站上,我将文件名保留为/pagename.html,用户只能输入/ pagename并加载页面。出于某种原因,我们的服务器设置(GoDaddy Plesk并行服务器)是不可能的,所以我的解决方法是为我想要的每个页面创建一个文件夹,实际文件是/index.html。我的目标已经完成,现在用户不必包含.html来加载页面。现在的问题是Google和SEOmoz报告正在阅读大量重复内容。原因是用户可以键入3个不同的内容来访问同一页面 - 如果包含“www”,则技术上为6:
sitename.com/services
sitename.com/services/
sitename.com/services/index.html
搜索引擎正在以第二种方式显示它(http://sitename.com/services/),如果您在没有“/”的情况下键入它,它会重定向到显示“/”。 SEOmoz说每个页面都有301重定向,以便实现这一目标,但我们从未手动执行过。
我尝试使用从sitename.com/services/到sitename.com/services的重定向创建.htaccess文件,但由于重定向过多,页面无法加载。
我是否打破了一些以这种方式设置的大规则?
请注意,“sitename.com/services/”只是一个页面的示例,我们在这个页面中设置了50页的整个网站。实际网站为http://www.logicalposition.com。
答案 0 :(得分:1)
首选方法是设置服务器以管理URL处理。例如,如果您在Apache服务器上,则可以使用以下建议并创建/更改.htaccess文件以获得所需的效果。
http://eisabainyo.net/weblog/2007/08/19/removing-file-extension-via-htaccess/
答案 1 :(得分:0)
最直接的方法是使用Apache的.htaccess(如果我没记错GoDaddy允许访问,虽然我可能错了)进行重定向。
请参阅此帖子:https://stackoverflow.com/a/5730126/549346(mods:可能重复?),它会指示您在.htacess文件中放置以下内容:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ /$1 [L,R=301]
答案 2 :(得分:0)
首先,听起来你没有做过基本的腿部工作来减少这种情况。你需要决定你想要www.samplesite.com还是samplesite.com?然后你可以很容易地用.htaccess设置它(见this handy tool)。这意味着最多只有三种变体,而不是6种。
我会接受@Jassons的建议并使用URL处理 - 我的客户中有2个目前使用GoDaddy,并且两者都使用此方法,所以应该完全支持。
一些更有用的URL处理/ htaccess重写链接(尽管注意:设置301重定向需要时间,耐心并仔细监控Web Master Tools上的抓取错误,因此最好使用URL处理!)
http://net.tutsplus.com/tutorials/other/using-htaccess-files-for-pretty-urls/
极端的例子,但仍然相关:) Handling several thousand redirects with .htaccess
修改强制尾随斜杠
您可以使用重写规则
轻松强制显示尾部斜杠RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*) $1 [L]
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?category=$1
我认为你已经完成了部分内容,但你会注意到有一个301重定向标头发送,这意味着当蜘蛛访问你的网站时,他们会更新URL以获得尾随斜线 - 它不会过夜。您可以使用Web Master Tools来加快更改网址的速度。
来源:在this部分网站中,它为您提供了有关其工作原理的详细解释