Nginx到Apache重写规则的转换

nukf8bse  于 2022-11-21  发布在  Nginx
关注(0)|答案(1)|浏览(243)

我不得不把nginx网站移到apache上,我有一个w/ mod重写规则的问题。这些是我的nginx重写规则,我不...很...钉它,因为我已经在我的.htaccess文件上尝试了各种迭代,它不太适合我。我也不容易在网上找到一个1:1的转换,regex总是让我困惑。

location / {
                index   index.php;
                try_files $uri /index.php?$uri&$args;
        }

        location ~ ^/(.*\.php)$ {
                try_files $uri =404;
                include /etc/nginx/fastcgi_params;
                fastcgi_param  SCRIPT_FILENAME $request_filename;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
                fastcgi_param FWENV 'development';
        }

我遇到的主要问题是
location ~ ^/(.*\.php)$ {
以及它如何与
try_files $uri /index.php?$uri&$args;
在.htaccess指令中
任何帮助都将不胜感激。
我在这里停了下来:
重写规则~ /(.*.php)$1 [左侧,左侧]
但是我很确定我是错误的,我已经在规则周围添加了^和$,有些在apache重启时给予我错误,有些没有,但是没有,在浏览器中给我一个正确的重写。

更新日期:

我已经开始使用这个规则,因为它确实抓住了一些问题,但我相信我最初的NGINX规则更好地结合了它。如果有人有更好的想法,请告诉我。

RewriteEngine on
RewriteRule ^.*\.(gif|jpe?g|png|css|ttf|js)$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)/(.*)/(.*)?$ /index.php?module=$1&controller=$2&process=$3&object_id=$4 [L]
RewriteRule ^(.*)/(.*)/(.*)?$ /index.php?module=$1&controller=$2&process=$3 [L]
RewriteRule ^(.*)/(.*)?$ /index.php?module=$1&controller=$2 [L]

所以,当我做下面的操作时,稍微改进一下,所有的东西仍然可以工作(和以前一样),但是仍然不能工作(像example.com/blah这样的URL)。

RewriteEngine on
RewriteRule ^.*\.(gif|jpe?g|png|css|ttf|js)$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)?$ /index.php? [L]
kuuvgm7e

kuuvgm7e1#

好吧,最终找到了答案,它非常接近我为nginx所做的(尽管我仍然不太理解它)。

RewriteEngine on
RewriteRule ^.*\.(gif|jpe?g|png|css|ttf|js)$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]

相关问题