这是htaccess
中的当前规则# Redirect
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ http://new.com/$1 [R=301,L]
</IfModule>
到目前为止工作正常但它应该有一个例外:如果它是主页,它应该重定向到特定的URL。因此,如果其http://old.com/在其他所有情况下都应重定向到http://new.com/shop,则其行为应如上所述http://old.com/cat/xyz重定向到http://new.com/cat/xyz,依此类推。
有什么建议吗?
答案 0 :(得分:1)
.*
匹配所有内容,包括着陆页URI,即/
,但.+
会跳过着陆页。
您可以使用以下规则:
RewriteEngine On
# handle landing page
RewriteCond %{HTTP_HOST} ^(?:www\.)?old\.com$ [NC]
RewriteRule ^$ http://new.com/shop [R=301,L]
# everything but landing page
RewriteCond %{HTTP_HOST} ^(?:www\.)?old\.com$ [NC]
RewriteRule . http://new.com%{REQUEST_URI} [R=301,L,NE]
答案 1 :(得分:0)
301指向另一个的单页网址
要创建从一个URL到另一个URL的301重定向,请添加 以下代码行:
Redirect 301 /retiredpage.html http://www.example.com/newpage.html
您可以根据需要在.htaccess文件中添加尽可能多的重定向行。
301目录网址及其所有内容
如果您重新设计了站点架构并重命名了目录,则需要为整个目录创建301。方法如下:
RedirectMatch 301 ^/oldname/ http://www.example.com/newname/
301指向另一个
的域名网址如果您刚刚购买了一个老化的域名,其流量(和搜索页面排名值)要用于扩充现有网站的域名,您可以设置301以从所购买的域名转移所有流量和排名到你当前的网站。
使用以下代码作为示例:
RedirectMatch 301 ^(.*)$ http://www.example.com
请确保在要重定向的源站点的.htaccess文件中设置此重定向代码,而不是重定向目标站点!
规范化的301个域名网址变体
由于搜索引擎索引网址,索引中指向同一内容网页的多个网址会在这些网址中划分该网页的可用网页排名信用。这绝对是“未针对搜索进行优化”的事态!要了解有关规范化细节的更多信息,请查看搜索引擎土地帖子为什么规范化从链接角度来看很重要。最重要的是,您希望将网页排名合并为一个(规范)网址,以优化该内容的搜索价值。
了解规范化最佳做法后,您需要在自己的网站上实施这些规范。这意味着您必须考虑将所有可能的替代网址变体重定向到规范网址。将以下代码示例用于您网站的主页:
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*(default|index)\.(html|php|htm)\ HTTP/ [NC]
RewriteRule ^(([^/]+/)*)(default|main|index)\.(html|php|htm)$ http://www.example.com/$1 [L,R=301]
第一个两行代码块将省略了“www。”前缀的URL重定向到完整的“www.example.com”主页URL。这意味着主页网址
** http://example.com不会自行解决,而是会重定向到http://www.example.com/。 **
第二个代码块将指定默认页面引用的URL重定向到省略默认页面引用名称的URL。此代码确保包含多个版本的显式页面名称引用的任何主页URL(例如default.htm或index.html)将重定向到规范主页URL,
<强> http://www.example.com/ 强>