2015-12-21 73 views
0

我的服务器。 htaccess的规则是这样的:.htaccess规则导致内部服务器错误,但它们看起来正确

RewriteEngine On 
# first redirect 
RewriteCond %{HTTP_HOST} ^www\.testing\.examplewebsite\.co\.uk$ [OR] 
RewriteCond %{HTTP_HOST} ^testing\.examplewebsite\.co\uk$ [NC] 
RewriteRule ^(.*)$ https://testing.examplewebsite.com/$1 [L,R=301] 

# second redirect 
RewriteCond %{HTTP_HOST} ^www\.test\.examplewebsite\.co\.uk$ [OR] 
RewriteCond %{HTTP_HOST} ^test\.examplewebsite\.co\uk$ [NC] 
RewriteRule ^(.*)$ https://test.examplewebsite.com/$1 [L,R=301] 

# Main redirect 
RewriteCond %{HTTP_HOST} ^www\.examplewebsite\.co\.uk$ [OR] 
RewriteCond %{HTTP_HOST} ^examplewebsite\.co\uk$ [NC] 
RewriteRule ^(.*)$ https://examplewebsite.com/$1 [L,R=301] 

# All subdomains that don't exist redirect 
RewriteCond %{HTTP_HOST} ^(.+)\.examplewebsite\.co\.uk$ [NC] 
RewriteRule^https://www.examplewebsite.com/ [L,R] 

但由于某些原因没有它会导致服务器内部错误,我不知道,如果他们都是100%正确任。像最后一条规则一样,在起始处也应该使用^(.*)$,在末尾使用$1

同样的标志,不太确定它们是否全部正确。

基本上我试图让:

  • testing.examplewebsite.co.ukwww.testing.examplewebsite.co.ukhttps://testing.examplewebsite.com
  • test.examplewebsite.co.ukwww.test.examplewebsite.co.ukhttps://test.examplewebsite.com
  • 其他一些子域像上面
  • examplewebsite.co.ukwww.examplewebsite.co.ukhttps://examplewebsite.com
  • 使所有使用的域名,例如stackoverflow.examplewebsite.co.ukwww.stackoverflow.examplewebsite.co.uk都被发送到https://examplewebsite.com
+0

在添加这些规则之前,您的.htaccess工作吗?你有没有检查你的错误日志? –

+0

是的,在我的日志中没有错误:( – Ryflex

+1

你不能看到正确的apache日志,它会显示为什么会有500错误,很可能是它不能识别'RewriteEngine'删除第一行RewriteEngine,看看你是否仍然有错误 –

回答

2

你有你的所有条件,一个错字。您行中的第二个条件在uk之前缺少.。^testing.examplewebsite.co.uk $ [NC]

RewriteEngine On 
# first redirect 
RewriteCond %{HTTP_HOST} ^www\.testing\.examplewebsite\.co\.uk$ [OR] 
RewriteCond %{HTTP_HOST} ^testing\.examplewebsite\.co\.uk$ [NC] 
RewriteRule ^(.*)$ https://testing.examplewebsite.com/$1 [L,R=301] 

# second redirect 
RewriteCond %{HTTP_HOST} ^www\.test\.examplewebsite\.co\.uk$ [OR] 
RewriteCond %{HTTP_HOST} ^test\.examplewebsite\.co\.uk$ [NC] 
RewriteRule ^(.*)$ https://test.examplewebsite.com/$1 [L,R=301] 

# Main redirect 
RewriteCond %{HTTP_HOST} ^www\.examplewebsite\.co\.uk$ [OR] 
RewriteCond %{HTTP_HOST} ^examplewebsite\.co\.uk$ [NC] 
RewriteRule ^(.*)$ https://examplewebsite.com/$1 [L,R=301] 

# All subdomains that don't exist redirect 
RewriteCond %{HTTP_HOST} ^(.+)\.examplewebsite\.co\.uk$ [NC] 
RewriteRule^https://www.examplewebsite.com/ [L,R] 
+0

那么最后一条规则呢,我应该使用'^'还是'^ (。*)$'或其他东西,我不明白重写规则的那部分是什么,除此之外,是的,我现在看到了这个错误,真是令人尴尬 – Ryflex

+1

在最后一行,只有当你还想要将任何文件或子文件夹重定向到O操作。由于这些子域名不存在,所以应该保留最后一条规则。 –

相关问题