iT邦幫忙

0

apache 的 rewriterule 在 nginx 時 ... ?

RewriteRule ^$ public/templates/index.php

RewriteRule ^admin/([\w\-]+)$ admin/templates/$1.php [L]

RewriteRule ^admin/search/([^/]+)$ admin/templates/search/index.php?search_query=$1

RewriteRule ^([\w\-]+)/([\w\-]+)$ public/templates/$1/$2.php [L]

想請問一下
這四個 apache 的 rewrite 設定,如果是在 nginx 會怎麼寫才對?

1 個回答

1
浩瀚星空
iT邦超人 1 級 ‧ 2019-11-18 19:31:34
最佳解答

網路上有很多htaccess轉成nginx規則用的在線工具。
可以先試著使用轉換後再放入規則。

不過要切記一件事,轉換後並不一定可以完全使用。
簡單規則還可以。太過麻煩的可能會沒辦法。
還是得先學習一下。

以下是幫你用在線工具轉換過來的。

# nginx configuration

location / {
  rewrite ^/$ /public/templates/index.php;
  rewrite ^/([\w\-]+)/([\w\-]+)$ /public/templates/$1/$2.php break;
}

location /admin {
  rewrite ^/admin/([\w\-]+)$ /admin/templates/$1.php break;
  rewrite ^/admin/search/([^/]+)$ /admin/templates/search/index.php?search_query=$1;
}
看更多先前的回應...收起先前的回應...
松松 iT邦研究生 2 級 ‧ 2019-11-18 20:00:46 檢舉

原來還有轉換工具

松松 iT邦研究生 2 級 ‧ 2019-11-19 13:49:05 檢舉

想順道問一下
我明明就有開 short_tag ,但是當換成 nginx 跑時,卻失效了?

listennn08 iT邦研究生 2 級 ‧ 2019-11-19 15:27:01 檢舉

你要確認一下是不是修改 nginx 裡的php.ini 改完要重開 nginx

松松 iT邦研究生 2 級 ‧ 2019-11-19 15:36:02 檢舉

怎麼 php 也有 apache 也有 nginx 也有 php.ini...

松松 iT邦研究生 2 級 ‧ 2019-11-19 15:41:31 檢舉

我透過 phpinfo 找到了,但已經調整成 on 又重新 reload nginx,但還是一樣@@

有點無言了。
改php.ini。是需要重啟php。而不是重啟nginx的。

nginx跟php的搭配大多是用fpm的模式。也就是區塊運做原理。
跟apache不太一樣。

apache的php大多數都是擴展式。所以重啟apache 也會連帶重置php
但如果是區塊運行式的。則是要各別重啟的。

松松 iT邦研究生 2 級 ‧ 2019-11-19 16:12:55 檢舉

原來是這樣,難怪之前重啟 apache 等同於重整 php

松松 iT邦研究生 2 級 ‧ 2019-11-19 16:13:52 檢舉

所以安裝 nginx 時也會在安裝一套 php?

listennn08 iT邦研究生 2 級 ‧ 2019-11-19 16:26:35 檢舉

浩瀚星空 大說的沒錯
要重啟 php-fpm
不過我都會一起重啟
/images/emoticon/emoticon06.gif

要看你安裝的方式是如何的。有些套件包會幫你全部nginx、php、mysql一起安裝。
但有的是要一個一個安裝。

我不清楚你的安裝方式。所以無法給你正確答案。

松松 iT邦研究生 2 級 ‧ 2019-11-19 16:28:46 檢舉

我是用 brew 安裝 nginx 的
所以我剛剛也是用 brew 重啟 php
我一直以為 apache 跟 nginx 是可以讀同一份 php...

我要發表回答

立即登入回答