htaccess 文件格式在某些重定向时会出现内部服务器错误
htaccess file format gives internal server error on some redirects
我有一个包含以下内容的 .htaccess 文件;
我的 .htaccess 文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^/?$ https://meervoormamas.nl [R=301,L]
RewriteRule ^/dossiers/autisme/?$ https://meervoormamas.nl/kind/ontwikkeling/ R=301,L]
RewriteRule ^/schoolkind/opvoeding/7\-tips\-om\-uw\-kinderen\-te\-begeleiden\-op\-sociale\-netwerken/?$ https://meervoormamas.nl/kind/opvoeding/7-tips-om-uw-kinderen-te-begeleiden-op-sociale-netwerken/ R=301,L]
</IfModule>
第一个 RewriteRule 起作用的地方,如果我输入 https://mamalove.nl it redirects to https://meervoormamas.nl
但是第二个 RewriteRule(WP 中的一个类别)给出了内部服务器错误,第三个 RewriteRule(post)。
我做错了什么?
以及 RewriteRule
指令中缺少的分隔标志(第 3 个)参数的空缺 [
,如评论中所述,在 目录 [=44= 中] (.htaccess
) 上下文 RewriteRule
模式 匹配的 URL 路径不以斜杠开头,因此这些规则永远不会匹配。
其他小问题:
- 您在第一条规则的 substitution 字符串中缺少域后的尾部斜杠。
- 在正则表达式字符外使用时无需反斜杠转义文字连字符 class(第三条规则)。
- 此处未使用
RewriteBase
指令。
- 不需要
<IfModule>
包装器。
请尝试以下操作:
RewriteEngine On
RewriteRule ^$ https://meervoormamas.nl/ [R=301,L]
RewriteRule ^dossiers/autisme/?$ https://meervoormamas.nl/kind/ontwikkeling/ [R=301,L]
RewriteRule ^schoolkind/opvoeding/7-tips-om-uw-kinderen-te-begeleiden-op-sociale-netwerken/?$ https://meervoormamas.nl/kind/opvoeding/7-tips-om-uw-kinderen-te-begeleiden-op-sociale-netwerken/ [R=301,L]
由于您似乎在第 3 条规则中重定向到 similar URL 路径,因此可以通过避免重复来“简化”。例如:
RewriteRule ^school(kind/opvoeding/7-tips-om-uw-kinderen-te-begeleiden-op-sociale-netwerken)/?$ https://meervoormamas.nl// [R=301,L]
</code> 是一个反向引用,它包含前面 <em> 模式 </em> 中捕获组中的所有内容。它基本上只是删除了“学校”前缀并确保重定向的 URL 以尾部斜杠结尾。</p>
<p>如果在现有的 WordPress 网站上使用这些规则,那么这些指令必须放在 <code>.htaccess
文件的顶部,在 # BEGIN WordPress
之前部分。
我有一个包含以下内容的 .htaccess 文件;
我的 .htaccess 文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^/?$ https://meervoormamas.nl [R=301,L]
RewriteRule ^/dossiers/autisme/?$ https://meervoormamas.nl/kind/ontwikkeling/ R=301,L]
RewriteRule ^/schoolkind/opvoeding/7\-tips\-om\-uw\-kinderen\-te\-begeleiden\-op\-sociale\-netwerken/?$ https://meervoormamas.nl/kind/opvoeding/7-tips-om-uw-kinderen-te-begeleiden-op-sociale-netwerken/ R=301,L]
</IfModule>
第一个 RewriteRule 起作用的地方,如果我输入 https://mamalove.nl it redirects to https://meervoormamas.nl 但是第二个 RewriteRule(WP 中的一个类别)给出了内部服务器错误,第三个 RewriteRule(post)。
我做错了什么?
以及 RewriteRule
指令中缺少的分隔标志(第 3 个)参数的空缺 [
,如评论中所述,在 目录 [=44= 中] (.htaccess
) 上下文 RewriteRule
模式 匹配的 URL 路径不以斜杠开头,因此这些规则永远不会匹配。
其他小问题:
- 您在第一条规则的 substitution 字符串中缺少域后的尾部斜杠。
- 在正则表达式字符外使用时无需反斜杠转义文字连字符 class(第三条规则)。
- 此处未使用
RewriteBase
指令。 - 不需要
<IfModule>
包装器。
请尝试以下操作:
RewriteEngine On
RewriteRule ^$ https://meervoormamas.nl/ [R=301,L]
RewriteRule ^dossiers/autisme/?$ https://meervoormamas.nl/kind/ontwikkeling/ [R=301,L]
RewriteRule ^schoolkind/opvoeding/7-tips-om-uw-kinderen-te-begeleiden-op-sociale-netwerken/?$ https://meervoormamas.nl/kind/opvoeding/7-tips-om-uw-kinderen-te-begeleiden-op-sociale-netwerken/ [R=301,L]
由于您似乎在第 3 条规则中重定向到 similar URL 路径,因此可以通过避免重复来“简化”。例如:
RewriteRule ^school(kind/opvoeding/7-tips-om-uw-kinderen-te-begeleiden-op-sociale-netwerken)/?$ https://meervoormamas.nl// [R=301,L]
</code> 是一个反向引用,它包含前面 <em> 模式 </em> 中捕获组中的所有内容。它基本上只是删除了“学校”前缀并确保重定向的 URL 以尾部斜杠结尾。</p>
<p>如果在现有的 WordPress 网站上使用这些规则,那么这些指令必须放在 <code>.htaccess
文件的顶部,在 # BEGIN WordPress
之前部分。