在我的网站上,当我尝试使用通配符重定向将我的旧目录名称重定向到我的网络托管 cpanel 帐户中的新目录名称时,我将目录名称“vehicles-cars”更改或更好地修改为“vehicles-cars-for-sale”。每次我从该目录打开页面时,我都会收到错误代码。
此网页有重定向循环。
该网站是 php。
问题是,我的旧目录中的许多页面都已在谷歌中编入索引,并且它们获得了重复的内容。
如果我重定向单个页面,它可以完美运行,但有很多页面,所以我需要通配符重定向来重定向整个目录。
我确实需要一些建议来解决这个问题。
这是.htaccess
重定向的文件代码,谢谢
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^vehicles\-cars\/?(.*)$ "http\:\/\/example\.com\/vehicles\-cars\-for\-sale\/$1" [R=301,L]
我有其他使用相同代码的整个目录的通配符重定向,并且它的工作完美,这里是 .htaccss 文件中的代码,它与上面的代码相同,并且对于这个目录工作完美
RewriteCond %{HTTP_HOST} ^adsbuz\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.adsbuz\.com$
RewriteRule ^autos\/?(.*)$ "http\:\/\/adsbuz\.com\/vehicles\-cars\-for\-sale\/$1" [R=301,L]
所以我不明白上面的代码有什么问题,我真的需要一些专家的建议,再次感谢
答案1
^vehicles\-cars/?(.*)$
将匹配:/vehicles-cars-for-sale/
导致循环。
我首先要删除尾随 / 的可选运算符:
RewriteRule ^vehicles\-cars/(.*)$ ....
并添加另一个来处理不匹配的 URL:
RewriteRule ^vehicles\-cars$ ...
这应该可行;我还没有测试过:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^vehicles\-cars/(.*)$ http://example\.com\/vehicles\-cars\-for\-sale/$1 [R=301,L]
RewriteRule ^vehicles\-cars$ http://example\.com\/vehicles\-cars\-for\-sale/ [R=301,L]