我不得不把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]
1条答案
按热度按时间kuuvgm7e1#
好吧,最终找到了答案,它非常接近我为nginx所做的(尽管我仍然不太理解它)。