RewriteCond / Rewrite Rule - Apache 2

时间:2013-10-20 09:34:27

标签: regex apache .htaccess mod-rewrite url-rewriting

目前我使用这些重写规则/条件:

RewriteEngine On
RewriteRule ^/forum/.* https://mineyourmind.net/forum/$1 [R=301,L]
RewriteRule ^/contao/.* https://mineyourmind.net/contao/$1 [R=301,L]
RewriteCond %{REQUEST_URI} !^/forum 
RewriteCond %{REQUEST_URI} !^/contao
RewriteCond %{HTTP_HOST} ^(www\.)?mineyourmind\.de$ [NC]
RewriteRule (.*) https://mineyourmind.net/de%{REQUEST_URI} [R=301,L]

它们完美无缺,每次重写都应保持不变,而不是一次。

如果您访问mineyourmind.de(主要/主站点),我不会将其重定向到mineyourmind.net/de。它应该重定向到mineyourmind.net,重写.net站点可以决定语言。

我无法解决这个问题,你会怎样管理这个?


修改

这些重写规则存在 no 问题,我在apache站点配置中使用它们。我只想要将每个发送到mineyourmind.de(根网址)的内容发送到mineyourmind.net并发送到mineyourmind.net/de。所有其他重定向应该保持不变。

EDIT2:

  • mineyourmind.de/ - > mineyourmind.net
  • mineyourmind.de/forum - > mineyourmind.net/forum /
  • mineyourmind.de/contao - > mineyourmind.net/contao
  • mineyourmind.de/* - > mineyourmind.net/de / *

''=所有其他网站(不是root,不是论坛/ ,不是contao / *)

1 个答案:

答案 0 :(得分:1)

试试这段代码:

RewriteEngine On

RewriteRule ^/?((?:forum|contao).*)$ https://mineyourmind.net/$1 [R=301,L,NC]

RewriteCond %{HTTP_HOST} ^(www\.)?mineyourmind\.de$ [NC]
RewriteRule ^/?$ http://mineyourmind.net/ [R=301,L]

RewriteCond %{REQUEST_URI} !^/(contao|forum) [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?mineyourmind\.de$ [NC]
RewriteRule ^ https://mineyourmind.net/de%{REQUEST_URI} [R=301,L]

这会跳过mineyourmind.de (the main/home site)重定向到mineyourmind.net,因为使用^/?.+$正则表达式确保它不是主页/根页。