我有一個包含以下內容的 .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,它會重定向到https://meervoormamas.nl 但是第二個 RewriteRule(WP 中的一個類別)會出現內部服務器錯誤,第三個也是RewriteRule(一個帖子)。
我究竟做錯了什么?
uj5u.com熱心網友回復:
正如注釋中提到的那樣,缺少[分隔RewriteRule指令上標志(第 3 個)引數的開頭,在目錄( .htaccess) 背景關系中,RewriteRule 模式匹配的 URL 路徑不以斜杠開頭,因此這些規則永遠不會匹配.
其他小問題:
- 您在第一個規則的替換字串中缺少域后的斜杠。
- 在正則運算式字符類之外使用時,無需反斜杠轉義文字連字符(第三條規則)。
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]
由于您似乎在第三條規則中重定向到類似的URL 路徑,因此可以通過避免重復來“簡化”。例如:
RewriteRule ^school(kind/opvoeding/7-tips-om-uw-kinderen-te-begeleiden-op-sociale-netwerken)/?$ https://meervoormamas.nl/$1/ [R=301,L]
$1是一個反向參考,它包含前面模式中捕獲的組中的所有內容。它基本上只是洗掉“學校”前綴并確保重定向的 URL 以尾部斜杠結尾。
如果這些規則在現有的 WordPress 站點上使用,那么這些指令必須放在.htaccess檔案的頂部,在該# BEGIN WordPress部分之前。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/399129.html
下一篇:顯示與底部對齊的疊加
