[英]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.