.htaccess 由于URL重复,如何执行301重定向

.htaccess 由于URL重复,如何执行301重定向,.htaccess,redirect,http-status-code-301,.htaccess,Redirect,Http Status Code 301,我目前正在尝试对我正在工作的网站的所有页面进行301重定向。问题在于此url: http://site.com/cash/ http://site.com/credit/ 及 显示相同的页面 这将导致一些重复的URL问题,并开始分裂我们的搜索引擎优化你的PageRank 我试图在我的网站上做到这一点,所有的搜索引擎优化都指向非斜杠版本 顺便说一句,我有大约90页,我必须改变…有什么好办法实现这一点的想法吗 如何在htaccess中执行301重定向以在我的所有页面上执行此操作 编辑: 所以要正

我目前正在尝试对我正在工作的网站的所有页面进行301重定向。问题在于此url:

http://site.com/cash/ 
http://site.com/credit/

显示相同的页面

这将导致一些重复的URL问题,并开始分裂我们的搜索引擎优化你的PageRank

我试图在我的网站上做到这一点,所有的搜索引擎优化都指向非斜杠版本

顺便说一句,我有大约90页,我必须改变…有什么好办法实现这一点的想法吗

如何在htaccess中执行301重定向以在我的所有页面上执行此操作

编辑:

所以要正确理解。这将执行301重定向

# Remove the trailing slash
RewriteCond %{HTTP_HOST} ^(www.)?example\.com$ [NC]
RewriteRule ^(.+)/$ http://www.example.com/$1 [R=301,L]
但这如何排除folder1呢

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

如果我把它放在同一个htaccess文件中,或者在folder1目录中创建另一个htaccess文件,而不是使用301,您可以使用。

而不是使用301,您可以使用。

您可以在
.htaccess
中添加以下内容以删除尾部斜杠

# Remove the trailing slash
RewriteCond %{HTTP_HOST} ^(www.)?example\.com$ [NC]
RewriteRule ^(.+)/$ http://www.example.com/$1 [R=301,L]

更新

然后,您还可以选择添加
www

RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) http://www.example.com$1 [R=301]
或者移除它

RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

您可以将以下内容添加到
.htaccess
以删除尾部斜杠

# Remove the trailing slash
RewriteCond %{HTTP_HOST} ^(www.)?example\.com$ [NC]
RewriteRule ^(.+)/$ http://www.example.com/$1 [R=301,L]

更新

然后,您还可以选择添加
www

RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) http://www.example.com$1 [R=301]
或者移除它

RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]


如果是针对Apache服务器,您可以使用mod_rewrite。。。它的效率非常低,但如果您担心的是SEO,那么它可能是最好的选择。如果是针对Apache服务器,您可以使用mod_rewrite来代替它。。。效率极低,但如果你担心的是搜索引擎优化,那么这可能是最好的选择

我也在这样做,但我读到两种方法都做可能更好…这听起来对这个答案来说是真的+1@塔默:我认为(我自己也会使用)规范链接是一种选择,即使只是与其他重定向一起使用。两者都是最好的,因为一些搜索引擎可能不支持规范链接,但事实上,只要一个规范链接就可以了。我也在这么做,但我读到,两者都做可能更好……这听起来对这个答案是真的+1@塔默:我认为(我自己也可以使用)规范链接是一种不错的选择,即使只是与其他重定向一起使用。两者都是最好的,因为一些搜索引擎可能不支持规范链接,但实际上,只有规范链接就可以了。没有一个链接到著名的来源,说明为什么需要重写mod_“灾难性的低效”,我不知道你为什么在回答中做出这样的评论。ಠ_ಠ@Stealthynija抱歉,这是一个公平的评论,我确实试图做得更好……mod_重写的问题是1)它必须对每个请求至少评估一次正则表达式,这在流量很大的web服务器上,特别是共享框上,会消耗宝贵的CPU时间。2)每个请求至少运行mod_重写两次,如果这些规则是由一个100%不知道怎么做的人编写的(参见[L]标志),这会消耗更多的CPU。所有这些行为都有记录。如果没有一个链接到著名的消息来源,说明为什么mod_rewrite“效率极低”,我不确定你为什么在回答中做出这种一次性评论。ಠ_ಠ@Stealthynija抱歉,这是一个公平的评论,我确实试图做得更好……mod_重写的问题是1)它必须对每个请求至少评估一次正则表达式,这在流量很大的web服务器上,特别是共享框上,会消耗宝贵的CPU时间。2)每个请求至少运行mod_重写两次,如果这些规则是由一个不知道怎么做的人写的(见[L]标志)这会消耗更多的CPU。所有这些行为都被记录下来了。这个重定向在example.com/上吗?因为在第三行我看到了R=301,这是301重定向,但它有一个www…这样做吗matter@Tamer:我添加了一个更新,其中包含两个附加规则,您可以使用这些规则强制执行或删除
www
。此逻辑存在问题因为所有的文件夹example.com/folder1/或example.com/folder2/根本不会呈现,所以也许我可以做我需要的…我如何做一个,例如example.com/change\u me/到example.com/change\u me…因为我想知道如何只更改这个你可以使用
RewriteCond%{REQUEST\u FILENAME}!-f
重写cond%{REQUEST_FILENAME}!-d
排除对您未重写的文件/文件夹的请求。是否在example.com/上重定向,因为在第三行我看到了R=301,这是301重定向,但它有一个www…是否这样做matter@Tamer:我添加了一个更新,其中包含两个附加规则,您可以使用它们强制执行或删除
www
。存在一个问题我使用这种逻辑是因为所有的文件夹example.com/folder1/或example.com/folder2/根本不会呈现,所以也许我可以做我需要的…我如何做一个,例如example.com/change\u me/到example.com/change\u me…因为我想知道如何只更改这个你可以使用
RewriteCond%{REQUEST\u FILENAME}!-f
RewriteCond%{REQUEST_FILENAME}!-d
以排除对未重写的文件/文件夹的请求。