我的项目有多个域名,我想为这些域名中的一个重定向100页 现在我找到了关于如何为1个域设置条件的this post。
RewriteCond %{HTTP_HOST} ^www\.site1\.com [NC]
RewriteRule ^(.*)$ index.php?lang=it [NC,QSA]
RewriteCond %{HTTP_HOST} ^www\.site2\.com [NC]
RewriteRule ^(.*)$ index.php?lang=en [NC,QSA]
我的问题是,如何设置100页呢? 我是否必须复制每个链接的条件?
我想做的是这个
RewriteCond %{HTTP_HOST} ^www\.site1\.com [NC]
RewriteRule ^some https://www.mypage.de/shop/some [R=301, L]
RewriteRule ^page https://www.mypage.de/shop/page [R=301, L]
RewriteRule ^settings https://www.mypage.de/shop/settings [R=301, L]
答案 0 :(得分:2)
在这种情况下有很多场景要做,例如,您可以重定向除特定页面之外的每个页面,如下所示:
RewriteCond %{HTTP_HOST} ^(www\.)?site1\.com [NC]
RewriteCond %{REQUEST_URI} !^/(page1|page2|page3|whatever)
RewriteRule ^(.*)$ https://www.mypage.de/shop/$1 [R=301, L]
但是,如果应该排除的页面数量很大,您可以创建目录,例如new
然后移动所有必须重定向到的文件,然后创建此规则
RewriteCond %{HTTP_HOST} ^(www\.)?site1\.com [NC]
RewriteCond %{REQUEST_URI} !^/new/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/new%{REQUEST_URI} -f
RewriteRule ^(.*)$ /new/$1 [L]
然后您可以添加此项以将包含new
的任何URI重定向到该新位置:
RewriteCond %{HTTP_HOST} ^(www\.)?site1\.com [NC]
RewriteCond %{REQUEST_URI} ^/new/
RewriteRule ^(.*)$ https://www.mypage.de/shop/$1 [R=301, L]
因此代码应如下所示:
RewriteCond %{HTTP_HOST} ^(www\.)?site1\.com [NC]
RewriteCond %{REQUEST_URI} !^/new/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/new%{REQUEST_URI} -f
RewriteRule ^(.*)$ /new/$1 [L]
RewriteCond %{HTTP_HOST} ^(www\.)?site1\.com [NC]
RewriteCond %{REQUEST_URI} ^/new/
RewriteRule ^(.*)$ https://www.mypage.de/shop/$1 [R=301, L]
答案 1 :(得分:0)
RewriteRule ^(.*)$ https://www.mypage.de/shop/$1 [QSA]
这会重定向每一页。
如果您只需要100个特定页面,则必须逐个添加。像其他答案一样提供。
答案 2 :(得分:0)
可能跳过旗帜将是最好的方式。
看起来像这样:
RewriteCond %{HTTP_HOST} !^www\.site1\.com [NC]
RewriteRule .? - [S=100]
RewriteRule ^some https://www.mypage.de/shop/some [R=301, L]
RewriteRule ^page https://www.mypage.de/shop/page [R=301, L]
RewriteRule ^settings https://www.mypage.de/shop/settings [R=301, L]
.....
RewriteRule ^rule_for_100nd_page https://www.mypage.de/shop/settings [R=301, L]
这是如何运作的。
RewriteRule .? - [S=100]
则不跳过100(S = 100)下一个RewriteRules,测试HOST www.site1.com
源域编写100条规则并继续。答案 3 :(得分:0)
假设您的重定向后页面名称与您在问题中显示的页面名称相同,则可以使用此类规则作为最重要的规则:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.site1\.com$ [NC]
RewriteRule .+ https://www.mypage.de/shop/$0 [R=301,NE,L]
确保使用新的浏览器进行测试。
答案 4 :(得分:0)
因此,在测试了一些建议之后,我最终不得不为每条规则添加条件以使其正常工作。
据我所知,如果目标是特定的,则无法为多个规则设置条件。
所以我对这个问题的解决方案看起来像这样 感谢您的所有建议。
RewriteCond %{HTTP_HOST} ^www\.site1\.com [NC]
RewriteRule ^some https://www.site1.de/shop/some [R=301, L]
RewriteCond %{HTTP_HOST} ^www\.site1\.com [NC]
RewriteRule ^page https://www.site1.de/random/page [R=301, L]
RewriteCond %{HTTP_HOST} ^www\.site1\.com [NC]
RewriteRule ^settings https://www.site1.de/whatever/settings [R=301, L]