簡體   English   中英

htaccess到nginx重寫問題

[英]htaccess to nginx rewrite issue

在我的代碼中,我嘗試使用在線轉換器將Apache .htaccess轉換為Nginx 我什至編輯了這個文件etc/nginx/conf.d/domainname.conf但是重寫URL無效。 我有兩個htaccess文件,其中一個用於腳本的根文件夾,另一個用於腳本的管理文件夾。

這是根目錄的htaccess文件內容

RewriteEngine On
RewriteRule ^([a-zA-Z0-9-/]+)$ index.php?slug=$1
RewriteRule ^([a-zA-Z0-9-/]+)/$ index.php?slug=$1

htaccess為Nginx轉換的代碼

location / {
  rewrite ^/([a-zA-Z0-9-/]+)$ /index.php?slug=$1;
  rewrite ^/([a-zA-Z0-9-/]+)/$ /index.php?slug=$1;
}

這是管理文件夾htaccess文件的內容

RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* $0.php [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.php($|\ |\?)
RewriteRule ^(.*)/$ /$1.php [L,R=301]

管理文件夾htaccess為Nginx轉換的代碼

location /administration {
  if (!-e $request_filename){
    rewrite ^(.*)$ /$0.php break;
  }
  rewrite ^/(.*)/$ /$1.php redirect;
}

我將轉換后的內容粘貼到domainname.conf(域名是我的域)中,然后重新啟動ngnix,但它根本無法工作。 我不知道轉換后的代碼是否正確,或者我是否錯過了其他任何事情。

只需編輯文件即etc/nginx/conf.d/yourdomain.tld.conf並查找以下代碼即可:

#location / {
#Uncomment 3 lines and set your rules here!
#}

您需要取消注釋這三行代碼或粘貼以下代碼:

location / {
    if (!-e $request_filename) {
    rewrite ^/([a-zA-Z0-9-/]+)$ /index.php?slug=$1;
    rewrite ^/([a-zA-Z0-9-/]+)/$ /index.php?slug=$1;
    }
}

location /administration/ {
    if (!-e $request_filename){
    rewrite ^(.*)$ $1.php last;
    }
}

然后,您必須要求重新啟動Nginx ,如果重新啟動沒有任何錯誤,它將可以正常工作,否則Nginx將停止工作,這一步很重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM