我正在尝试在单个重定向中组合更多规则,现在我有许多规则和许多重定向,如附图所示,但对于SEO目的,这不是一个好的行为。
故事是这样的:我有一个旧的网址,它不再存在,而且是一个新网址,我想要重定向。如果请求的网址没有www。和https然后我想添加它们。如果网址末尾有斜杠,我想删除它。 一切正在进行,但是分多步进行。
这就是我在.htaccess文件中的内容:
RewriteRule ^source1/source2$ https://www.domain.com/destination1/destination2 [L,R=301]
RewriteCond %{REQUEST_URI} !^/system [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)/$ /$1 [R=301,L,QSA]
#-----------------redirect to https-----------------
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} !^www.domain.com(.*)$ [NC]
RewriteRule (.*) https://www.domain.com%{REQUEST_URI} [L,R=301]
我在这个指令中使用了所有这些规则:
<IfModule mod_rewrite.c>
答案 0 :(得分:3)
这样做可以避免多个301
用于搜索引擎优化目的:
# specific redirects
RewriteRule ^source1/source2/?$ https://www.domain.com/destination1/destination2 [L,R=301,NC]
# Remove the slash from the end of URL
RewriteCond %{REQUEST_URI} !^/system [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ https://www.domain.com/$1 [R=301,L,NE]
#-----------------redirect to https-----------------
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.domain.com%{REQUEST_URI} [L,R=301,NE]
确保在测试此更改之前完全清除浏览器缓存。