2011-04-30 9 views
23

Tôi không có may mắn chuyển đổi các quy tắc htaccess thành nginx viết lại. Tôi đã kiểm tra các tài liệu NginxRewriteModule và có một vài thực hiện, nhưng những người phức tạp hơn tôi đang ở một mất mát cho. Dưới đây là những gì tôi đang tìm kiếm tại địa chỉ:chuyển đổi htaccess thành nginx

RewriteRule ^$            /cgi-bin/index.cgi [L] 
RewriteRule ([0-9A-Za-z]{12})-del-([0-9A-Za-z]+)/.+$   /cgi-bin/index.cgi?del=$1-$2 [L] 

RewriteCond  %{REQUEST_FILENAME} !-f 

RewriteRule ^([0-9A-Za-z]{12})(\.html?|$)$     /cgi-bin/index.cgi?op=download1&id=$1 [L] 
RewriteRule ^([0-9A-Za-z]{12})(\/.+|\.html?|$)    /cgi-bin/index.cgi?op=download1&id=$1&fname=$2 [L] 
RewriteRule ^([0-9A-Za-z\-_]{4,64})/([0-9A-Za-z]{12})$ /cgi-bin/index.cgi?op=download1&usr_login=$1&id=$2 [L] 
RewriteRule ^([0-9A-Za-z\-_]{4,64})/([0-9A-Za-z]{12})(\/.+|\.html?|$)  /cgi-bin/index.cgi?op=download1&usr_login=$1&id=$2&fname=$3 [L] 

#RewriteRule ^Reseller\.html$           /cgi-bin/Templates/Pages/english/Reseller.html [L] 
RewriteRule ^checkfiles\.html$          /cgi-bin/index.cgi?op=checkfiles [L] 
RewriteRule ^contact\.html$           /cgi-bin/index.cgi?op=contact [L] 
RewriteRule ^premium\.html$           /cgi-bin/index.cgi?op=payments [L] 
RewriteRule ^login\.html$           /cgi-bin/index.cgi?op=login [L] 
RewriteRule ^catalogue(.*)\.html$         /cgi-bin/index.cgi?op=catalogue&date=$1 [L] 
RewriteRule ^news([0-9]*)\.html$          /cgi-bin/index.cgi?op=news&page=$1 [L] 
RewriteRule ^n([0-9]+)-.*\.html$          /cgi-bin/index.cgi?op=news_details&news_id=$1 [L] 
RewriteRule ^free([0-9]+)\.html$      /cgi-bin/index.cgi?op=registration&aff_id=$1 [L] 
RewriteRule ^users/([0-9A-Za-z\-_]{4,64})/?([0-9]+|$)  /cgi-bin/index.cgi?op=user_public&usr_login=$1&fld_id=$2 [L,NC] 
RewriteRule ^embedmp3-([0-9A-Za-z]{12})\.html$ /cgi-bin/index.cgi?op=mp3_embed&file_code=$1 [L] 
RewriteRule ^embedmp4-([0-9A-Za-z]{12})\.html$ /cgi-bin/index.cgi?op=mp32_embed&file_code=$1 [L] 
RewriteRule ^box$         /cgi-bin/index_box.cgi [L] 

RewriteCond  %{REQUEST_FILENAME} !-f 
RewriteCond  %{REQUEST_FILENAME} !-d 
RewriteRule ^([0-9A-Za-z\-_]{4,64})(/[^\/]*/?|$)$   /cgi-bin/index.cgi?op=user_public&usr_login=$1&fld=$2 [L,NC] 

RewriteCond  %{REQUEST_FILENAME} !-f 
RewriteRule ^([a-z0-9\-\_]+).html(.*)      /cgi-bin/index.cgi?op=page&tmpl=$1$2 [L] 
+0

tốt hơn cho http://serverfault.com/ hoặc http://webmasters.stackexchange.com/. –

Trả lời

9

Rewrite quy tắc được khá nhiều văn bản cùng một cách với nginx: http://wiki.nginx.org/HttpRewriteModule#rewrite

Những quy tắc đang gây ra vấn đề cho bạn? Tôi có thể giúp bạn dịch những thứ đó!

33

công cụ trực tuyến để dịch Apache .htaccess để Nginx công cụ viết lại bao gồm:

Lưu ý rằng những công cụ này sẽ chuyển đổi để tương đương rewrite expressions sử dụng if báo cáo, nhưng họ nên được chuyển đổi thành try_files. Xem:

+3

điều này dường như không làm việc cho tôi nhưng điều này đã làm: http://winginx.com/htaccess –

+0

Không làm việc cho tôi.Tôi đã thử một quy tắc viết lại rất cơ bản. –

+1

bạn có thể cho tôi biết, tôi nên sử dụng đầu ra ở đâu? trong tập tin php? Tôi đã sử dụng [this] (http://winginx.com/htaccess), và nó cho tôi một đầu ra chứa 'if', Bây giờ tôi muốn biết làm thế nào tôi nên sử dụng nó? –

1

Bạn có thể dễ dàng thực hiện một kịch bản Php để phân tích htaccess cũ của bạn, tôi đang sử dụng này cho các quy tắc PrestaShop:

$ content = $ _POST [ 'content' ];

$lines = explode(PHP_EOL, $content); 
    $results = ''; 

    foreach($lines as $line) 
    { 
     $items = explode(' ', $line); 

     $q = str_replace("^", "^/", $items[1]); 

     if (substr($q, strlen($q) - 1) !== '$') $q .= '$'; 

     $buffer = 'rewrite "'.$q.'" "'.$items[2].'" last;'; 

     $results .= $buffer.PHP_EOL; 
    } 

    die($results); 
+12

Đó là một sự xấu hổ một câu trả lời khá nửa chừng đã bị tổn hại bởi một bình luận flippant. Tôi đã chỉnh sửa nó. –

+0

Câu trả lời này có thể là phao cứu sinh như một giải pháp nhanh chóng, nhưng tốt nhất là không viết lại như thế này. Đặc biệt là cho một trang web thương mại điện tử. Vui lòng đọc tài liệu này https://www.nginx.com/resources/wiki/start/topics/examples/likeapache-htaccess/ –

9

Chưa thử nghiệm, nhưng ngoại hình đẹp hơn the one Alex đề cập đến.

Mô tả tại winginx.com/en/htaccess nói:

Về htaccess to nginx converter

Dịch vụ này để chuyển đổi .htaccess của một Apache để nginx hướng dẫn cấu hình.

Trước hết, dịch vụ được coi là một mod_rewrite cho trình chuyển đổi nginx. Tuy nhiên, nó cho phép bạn chuyển đổi một số hướng dẫn khác có lý do để được chuyển từ Apache sang nginx.

Hướng dẫn máy chủ lưu ý (ví dụ: php_value, v.v.) bị bỏ qua.

Trình biến đổi không kiểm tra cú pháp, bao gồm các biểu thức chính quy và lỗi logic.

Vui lòng kiểm tra kết quả theo cách thủ công trước khi sử dụng.

+0

winginx.com/htaccess không hoạt động –

+0

Chỉ cần nhận thấy ngày hôm qua rằng nó đã ngừng hoạt động ngay bây giờ, có. Hy vọng rằng nó sẽ trở lại trực tuyến. –

3

Sử dụng này: http://winginx.com/htaccess

Chuyển đổi trực tuyến, cách tốt đẹp và tiết kiệm thời gian;)

+2

Nếu bạn nhìn kỹ, bạn có thể thấy rằng tôi đã đăng liên kết đó trước khi bạn làm .. –

+0

người đàn ông đích thực, xin lỗi! – ErickXavier