我在 Nginx 中得到了以下重寫規則,其中我試圖轉換為 apache/.htaccess 規則,在這些規則中我不斷收到錯誤并且效果不佳,沒有找到任何從 nginx 到 .htaccess 的在線轉換器,相反,我希望有人可以幫我轉換它。
這是我的 nginx 規則:
if (!-d $request_filename){
set $rule_0 1$rule_0;
}
if (!-f $request_filename){
set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
rewrite ^/(.*?)([^/]*)$ /$1index.php?$2 last;
}
這是我的 .htaccess 嘗試:
<IfModule mod_rewrite.c>
RewriteEngine on
# Apache 2.4
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*?)([^/]*)$ $1index.php?$2 [QSA,PT,L]
RewriteEngine On
RewriteBase /
if (!-d $request_filename){
set $rule_0 1$rule_0;
}
if (!-f $request_filename){
set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
rewrite ^/(.*?)([^/]*)$ /$1index.php?$2 last;
}
ErrorDocument 404 /404.php
</IfModule>
但是每當我嘗試這樣做時,我都會不斷收到決議錯誤,有人有經驗來解決這個問題嗎?
uj5u.com熱心網友回復:
您似乎已經這樣做了,但由于某種原因,您還在中間嵌入了原始 Nginx 指令(這自然會導致決議錯誤)。
因此,等效的 Apache/.htaccess指令似乎只有以下內容:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*?)([^/]*)$ $1index.php?$2 [QSA,L]
在背景關系中PT不需要該標志。.htaccess
您不需要<IfModule>包裝器,除非這些指令是可選的。
if (!-d $request_filename){ set $rule_0 1$rule_0; }
但是,第一個set指令暗示該$rule_0變數可能已經在配置的早期設定?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/449847.html
