使用重定向进行无扩展

时间:2012-05-23 09:13:40

标签: .htaccess redirect

我的网站有超过500个动态网页,我使用htaccess文件中的以下规则制作所有静态(相同)网页并重定向旧网址或新网址:

RewriteCond %{QUERY_STRING} ^cid=2&gas=nitrogen$
RewriteRule ^purity\.php$ http://Example.com/gases/nitrogen.php? [R=301,L]

并且通过对我的所有网页使用此代码现在是静态网址

现在我想让它成为http://www.Example.com/gases/nitrogen(没有扩展名),为此我已经上传了以下规则:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^\ ]+)\.php\  [NC]
RewriteRule ^ /%1 [R=301]

这段代码实际上是将我的php页面重定向到非php页面,但是有404错误。

我无法弄清楚这个问题。

请帮助!!

1 个答案:

答案 0 :(得分:0)

您尝试做的事情有问题。你必须了解重写是如何工作的。您正在使您的网络服务器提供不存在的不同页面。所以通过发送一个丑陋的URL到一个更好的SEO'd,你说ok服务器给我这个页面而不是。如果页面本身不存在,则服务器会发出404错误。您的重写应该来自您希望他们重定向到您的旧页面名称的页面,而不需要[R]参数,因此您的服务器知道,不要给这个页面,给那个其他页面,不要让他们知道它的通过显示其他URL来完成,这就是删除[R]所做的事情。然后,为了防止无限重定向循环,请不要将丑陋的页面名称重定向到新的页面名称。相反,只需显示重定向的网址而不是丑陋的网址,以及所有那些难看的参数。但是,由于你可能已经被索引并且搜索引擎知道丑陋的页面,我建议不要再链接到那些页面,并在所有页面上使用新的页面名称来进行导航和引用其他页面,但是我会在您的网页上添加规范元标记,告诉Google和其他搜索引擎您最喜欢的网址是什么。如果您已经开始没有任何搜索引擎知道您的网址结构与所有这些参数,您可以使用规范元标记跳过,因为如果您总是使用重写,搜索引擎将无法通过这些名称知道您的网页。

相关问题