Apache-2.2
將 nginx 轉換為 Apache 重寫
我正在嘗試從 nginx 上的現有站點設置 CodeIgniter。我的本地機器是 Apache,這是 nginx 上的重定向方案。我怎麼寫這個使用
RewriteRules
?if ($host ~* ^www\.(.*)) { set $host_without_www $1; rewrite ^(.*)$ http://$host_without_www$1 permanent; } if ($request_uri ~* ^(/welcome(/index)?|/index(.php)?)/?$){ rewrite ^(.*)$ / permanent; } if ($request_uri ~* index/?$){ rewrite ^/(.*)/index/?$ /$1 permanent; } if (!-d $request_filename){ rewrite ^/(.+)/$ /$1 permanent; } if ($request_uri ~* ^/system){ rewrite ^/(.*)$ /index.php?/$1 last; break; } if (!-e $request_filename){ rewrite ^/(.*)$ /index.php?/$1 last; break; }
像這樣的東西:
# These go in the VirtualHost context. RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1$1 [R=301,L] RewriteCond %{REQUEST_URI} ^(/welcome(/index)?|/index(.php)?)/?$ [NC] RewriteRule ^ / [R=301,L] RewriteRule ^/(.*)/index/?$ /$1 [R=301,L,NC] RewriteCond %{REQUEST_URI} ^/system [NC] RewriteRule ^/(.*)$ /index.php?/$1 [L] <Directory /path/to/docroot> # This is so that these have the correct filesystem path in the # REQUEST_FILENAME parameter. # If you already have a <Directory> for here, add these to it. RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/$ $1 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^/(.*)$ /index.php?/$1 [L] </Directory>