Nginx

nginx wordpress 永久連結日期和名稱

  • April 22, 2012

大家好 :) 我是 nginx 新手,我正在嘗試設置通常會添加到 .htaccess 文件中的 wordpress 永久連結結構。

這是來自 .htacces 的舊重寫規則

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

這是目前的 nginx 站點配置:

server {
 listen 80;
 server_name *.noconformity.co;
 rewrite ^ http://noconformity.co$request_uri? permanent;
}
server {
 listen 80;
 server_name noconformity.co ~(sub1|sub2)\.noconformity\.co$;
 root /srv/www/www.noconformity.co;
 access_log /var/log/nginx-hosts/www_noconformity.co.access;
 error_log /var/log/nginx-hosts/www_noconformity.co.error error;

 error_page 400 401 402 403 404 500 502 503 504 /error.htm;
 location  /error.htm {
   internal;
 }
 # ------------------------------------------------------------------------
 location / {
   index index.html index.php index.htm;
   location ~* ^.*\.php$ {
     include        fastcgi_params;
       fastcgi_pass   127.0.0.1:9000;
       fastcgi_index  index.php;
       fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
     }
 }
 # ------------------------------------------------------------------------
 # serve favicon
 location = /favicon.ico { 
   log_not_found off;
   access_log off;
 }
   # ------------------------------------------------------------------------
 # process robots.txt
 location = /robots.txt {
   allow all;
   log_not_found off;
   access_log off;
 }
   # ------------------------------------------------------------------------
 # serve static files directly
 location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ {
   access_log off;
   expires max;
 }
   # ------------------------------------------------------------------------
 # block access to .ht files
 location ~ /\.ht {
   deny  all;
 }
 # ------------------------------------------------------------------------
   # short cuts
   if ($uri ~* "/login") {
       rewrite ^/login(/.*)? /wp-admin$1;
   }
   # ------------------------------------------------------------------------
   # BEGIN W3TC Browser Cache
   gzip on;
   gzip_types text/css application/x-javascript text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
   location ~ \.(css|js)$ {
           expires 31536000s;
           add_header Pragma "public";
           add_header Cache-Control "max-age=31536000, public, must-revalidate, proxy-revalidate";
           add_header X-Powered-By "W3 Total Cache/0.9.2.3";
   }
   location ~ \.(html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml)$ {
           expires 180s;
           add_header Pragma "public";
           add_header Cache-Control "max-age=180, public, must-revalidate, proxy-revalidate";
           add_header X-Powered-By "W3 Total Cache/0.9.2.3";
   }
   location ~ \.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$ {
           expires 31536000s;
           add_header Pragma "public";
           add_header Cache-Control "max-age=31536000, public, must-revalidate, proxy-revalidate";
           add_header X-Powered-By "W3 Total Cache/0.9.2.3";
   }
   # END W3TC Browser Cache
   # BEGIN W3TC Skip 404 error handling by WordPress for static files
   if (-f $request_filename) {
           break;
   }
   if (-d $request_filename) {
           break;
   }
   if ($request_uri ~ "(robots\.txt|sitemap(_index|[0-9]+)?\.xml(\.gz)?)") {
           break;
   }
   if ($request_uri ~* \.(css|js|html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$) {
           return 404;
   }
   # END W3TC Skip 404 error handling by WordPress for static files
   # ------------------------------------------------------------------------
}

我遇到過一些帶有類似範例的文章,但到目前為止沒有任何效果。任何指針?

如果可能,您應該避免使用if指令。上述 Apache 的重寫規則可以轉換為 Nginx 語法,如下所示:

try_files $uri $uri/ /index.php;

已經有關於使用 Nginx 的 Wordpress 的完整文件:http ://wiki.nginx.org/Wordpress

沒有理由嘗試重新發明輪子,當然也不需要兼容性模組。

引用自:https://serverfault.com/questions/317821