Apache .htaccess规则导致内部服务器错误,但看起来正确
我的服务器。htaccess规则如下所示:Apache .htaccess规则导致内部服务器错误,但看起来正确,apache,.htaccess,mod-rewrite,url-rewriting,rewrite,Apache,.htaccess,Mod Rewrite,Url Rewriting,Rewrite,我的服务器。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
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.uk
转到www.testing.examplewebsite.co.uk
https://testing.examplewebsite.com
和test.examplewebsite.co.uk
转到www.test.examplewebsite.co.uk
https://test.examplewebsite.com
- 像上面这样的一些其他子域
和examplewebsite.co.uk
转到www.examplewebsite.co.uk
https://examplewebsite.com
- 使所有使用过的域,例如
和stackoverflow.examplewebsite.co.uk
都发送到www.stackoverflow.examplewebsite.co.uk
https://examplewebsite.com
- 您在所有情况下都有打字错误。行中的第二个条件在
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]
在添加这些规则之前,您是否使用了.htaccess?您是否检查了错误日志?是的,我的日志中没有错误:(您无法查看正确的apache日志。它将显示出现500错误的原因。很可能是它无法识别
RewriteEngine
删除第一行RewriteEngine,然后查看是否仍有错误。@PanamaJack Ahh在apache日志中,是的,它显示:RewriteCond:无法编译正则表达式“^testing\”。例如我们bsite\\\.co\\uk$”
\u
是一个特殊的转义序列,用于输入unicode字符,后面应该跟4个十六进制数字。(虽然我甚至不确定Apache是否支持这一点?)$或其他一些东西,我不明白重写规则的这部分是为了什么。除此之外,是的,我现在看到了错误。多么尴尬。在最后一行中,这只关系到你是否也要重定向任何文件或子文件夹。因为那些子域不存在,你应该保留最后一条规则。