Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache .htaccess规则导致内部服务器错误,但看起来正确_Apache_.htaccess_Mod Rewrite_Url Rewriting_Rewrite - Fatal编程技术网

Apache .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

我的服务器。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.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是否支持这一点?)$或其他一些东西,我不明白重写规则的这部分是为了什么。除此之外,是的,我现在看到了错误。多么尴尬。在最后一行中,这只关系到你是否也要重定向任何文件或子文件夹。因为那些子域不存在,你应该保留最后一条规则。