2013-03-08 328 views
1

我得到了安裝了Nginx + phpFPM的FreeBSD 9.1 VPS。在phpBB論壇的URL重寫規則的問題。試圖插入一些配置,沒有工作。原單的.htaccess:在nginx的創建Nginx + phpFPM重寫規則不起作用

# REMEBER YOU ONLY NEED TO STARD MOD REWRITE ONCE 
RewriteEngine On 
# Uncomment the statement below if you want to make use of 
# HTTP authentication and it does not already work. 
# This could be required if you are for example using PHP via Apache CGI. 
# RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] 
# REWRITE BASE 
RewriteBase/
# HERE IS A GOOD PLACE TO FORCE CANONICAL DOMAIN 
# RewriteCond %{HTTP_HOST} !^localhost/forum$ [NC] 
# RewriteRule ^(.*)$ http://localhost/forum/$1 [QSA,L,R=301] 

# DO NOT GO FURTHER IF THE REQUESTED FILE/DIR DOES EXISTS 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule . - [L] 
##################################################### 
# PHPBB SEO REWRITE RULES ALL MODES 
##################################################### 
# AUTHOR : dcz www.phpbb-seo.com 
# STARTED : 01/2006 
################################# 
# FORUMS PAGES 
############### 
# FORUM INDEX REWRITERULE WOULD STAND HERE IF USED. "forum" REQUIRES TO BE SET AS FORUM INDEX 
# RewriteRule ^forum\.html$ /index.php [QSA,L,NC] 
# FORUM ALL MODES 
RewriteRule ^(forum|[a-z0-9_-]*-f)([0-9]+)(-([0-9]+))?\.html$ /viewforum.php?f=$2&start=$4 [QSA,L,NC] 
# TOPIC WITH VIRTUAL FOLDER ALL MODES 
RewriteRule ^(forum|[a-z0-9_-]*-f)([0-9]+)/(topic|[a-z0-9_-]*-t)([0-9]+)(-([0-9]+))?\.html$ /viewtopic.php?f=$2&t=$4&start=$6 [QSA,L,NC] 
# TOPIC WITHOUT FORUM ID & DELIM ALL MODES 
RewriteRule ^([a-z0-9_-]*)/?(topic|[a-z0-9_-]*-t)([0-9]+)(-([0-9]+))?\.html$ /viewtopic.php?forum_uri=$1&t=$3&start=$5 [QSA,L,NC] 
# PHPBB FILES ALL MODES 
RewriteRule ^resources/[a-z0-9_-]+/(thumb/)?([0-9]+)$ /download/file.php?id=$2&t=$1 [QSA,L,NC] 
# PROFILES THROUGH USERNAME 
RewriteRule ^member/([^/]+)/?$ /memberlist.php?mode=viewprofile&un=$1 [QSA,L,NC] 
# USER MESSAGES THROUGH USERNAME 
RewriteRule ^member/([^/]+)/(topics|posts)/?(page([0-9]+)\.html)?$ /search.php?author=$1&sr=$2&start=$4 [QSA,L,NC] 
# GROUPS ALL MODES 
RewriteRule ^(group|[a-z0-9_-]*-g)([0-9]+)(-([0-9]+))?\.html$ /memberlist.php?mode=group&g=$2&start=$4 [QSA,L,NC] 
# POST 
RewriteRule ^post([0-9]+)\.html$ /viewtopic.php?p=$1 [QSA,L,NC] 
# ACTIVE TOPICS 
RewriteRule ^active-topics(-([0-9]+))?\.html$ /search.php?search_id=active_topics&start=$2&sr=topics [QSA,L,NC] 
# UNANSWERED TOPICS 
RewriteRule ^unanswered(-([0-9]+))?\.html$ /search.php?search_id=unanswered&start=$2&sr=topics [QSA,L,NC] 
# NEW POSTS 
RewriteRule ^newposts(-([0-9]+))?\.html$ /search.php?search_id=newposts&start=$2&sr=topics [QSA,L,NC] 
# UNREAD POSTS 
RewriteRule ^unreadposts(-([0-9]+))?\.html$ /search.php?search_id=unreadposts&start=$2 [QSA,L,NC] 
# THE TEAM 
RewriteRule ^the-team\.html$ /memberlist.php?mode=leaders [QSA,L,NC] 
# HERE IS A GOOD PLACE TO ADD OTHER PHPBB RELATED REWRITERULES 

# FORUM WITHOUT ID & DELIM ALL MODES 
# THESE FOUR LINES MUST BE LOCATED AT THE END OF YOUR HTACCESS TO WORK PROPERLY 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([a-z0-9_-]+)(-([0-9]+))\.html$ /viewforum.php?forum_uri=$1&start=$3 [QSA,L,NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([a-z0-9_-]+)\.html$ /viewforum.php?forum_uri=$1 [QSA,L,NC] 
# FIX RELATIVE PATHS : FILES 
RewriteRule ^.+/(style\.php|ucp\.php|mcp\.php|faq\.php|download/file.php)$ /$1 [QSA,L,NC,R=301] 
# FIX RELATIVE PATHS : IMAGES 
RewriteRule ^.+/(styles/.*|images/.*)/$ /$1 [QSA,L,NC,R=301] 
# END PHPBB PAGES 
##################################################### 

樣本配置:

server { 
     listen 80; 
     server_name www.domain.com; 
     rewrite^http://domain.com$request_uri?; 
error_log /var/log/www/domain.com/nerror.log; 
} 
server { 
     listen 80; 
     server_name domain.com; 
     server_name_in_redirect off; 
     root /usr/local/www/domain.com; 
     index index.php index.html index.htm; 
     location ~* ^.+\.(ico|js|gif|jpg|jpeg|png|bmp)$ { 
      expires 30d; 
     } 

     location/{ 
     try_files $uri $uri/ /index.php; 
     rewrite ^/(forum|[a-z0-9_-]*-f)([0-9]+)(-([0-9]+))?\.html$ /viewforum.php?f=$2&start=$4 last; 
     rewrite ^/(forum|[a-z0-9_-]*-f)([0-9]+)/(topic|[a-z0-9_-]*-t)([0-9]+)(-([0-9]+))?\.html$ /viewtopic.php?f=$2&t=$4&start=$6 last; 
     rewrite ^/post([0-9]+)\.html$ /viewtopic.php?p=$1 last; 
     rewrite ^/(forum|[a-z0-9_-]*-f)([0-9]+)/(topic|[a-z0-9_-]*-t)([0-9]+)(-([0-9]+))?\.html$ /viewtopic.php?f=$2&t=$4&start=$6 last; 
     rewrite ^/([a-z0-9_-]*)/?(topic|[a-z0-9_-]*-t)([0-9]+)(-([0-9]+))?\.html$ /viewtopic.php?forum_uri=$1&t=$3&start=$5 last; 
     rewrite ^/resources/[a-z0-9_-]+/(thumb/)?([0-9]+)$ /download/file.php?id=$2&t=$1 last; 
     rewrite ^/post([0-9]+)\.html$ /viewtopic.php?p=$1 last; 
     rewrite ^/active-topics(-([0-9]+))?\.html$ /search.php?search_id=active_topics&start=$2&sr=topics last; 
     rewrite ^/unanswered(-([0-9]+))?\.html$ /search.php?search_id=unanswered&start=$2&sr=topics last; 
     rewrite ^/newposts(-([0-9]+))?\.html$ /search.php?search_id=newposts&start=$2&sr=topics last; 
     rewrite ^/unreadposts(-([0-9]+))?\.html$ /search.php?search_id=unreadposts&start=$2 last; 
     } 
      location ~ /(config\.php|common\.php|cache|files|images/avatars/upload|includes|store) { 
     deny all; 
     return 403; 
    } 

     location ~ \.php$ { 
        # fastcgi_split_path_info ^(.+\.php)(.*)$; 
        fastcgi_pass unix:/tmp/php-fpm.sock; 
       fastcgi_param DOCUMENT_ROOT $document_root; 
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
       fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name; 


    include fastcgi_params; 
    fastcgi_param QUERY_STRING  $query_string; 
    fastcgi_param REQUEST_METHOD $request_method; 
    fastcgi_param CONTENT_TYPE  $content_type; 
    fastcgi_param CONTENT_LENGTH $content_length; 
    fastcgi_intercept_errors  on; 
    fastcgi_ignore_client_abort  off; 
    fastcgi_connect_timeout 60; 
    fastcgi_send_timeout 180; 
    fastcgi_read_timeout 180; 
    fastcgi_buffer_size 128k; 
    fastcgi_buffers 4 256k; 
    fastcgi_busy_buffers_size 256k; 
    fastcgi_temp_file_write_size 256k; 

     } 
     location ~ /\.ht { 
      deny all; 
     } 
} 

回答

0

的問題是,你所有的重寫規則之前使用try_files $uri $uri/ /index.php;。如果try_files成功,它停在那裏。

要解決這個問題,你有幾個選項。

1)打破了所有的重寫成位置塊,按照以下格式:

location ~* /(forum|[a-z0-9_-]*-f)([0-9]+)(-([0-9]+))?\.html$ { 
    rewrite^/viewforum.php?f=$2&start=$4 last; 
} 

或2)添加@rewrite塊,像這樣:

location/{ 
    try_files $uri @rewrite; 
} 

location @rewrite { 
    rewrite ^/$ /index.php last; 
    rewrite ^/(forum|[a-z0-9_-]*-f)([0-9]+)(-([0-9]+))?\.html$ /viewforum.php?f=$2&start=$4 last; 
    rewrite ^/(forum|[a-z0-9_-]*-f)([0-9]+)/(topic|[a-z0-9_-]*-t)([0-9]+)(-([0-9]+))?\.html$ /viewtopic.php?f=$2&t=$4&start=$6 last; 
    rewrite ^/post([0-9]+)\.html$ /viewtopic.php?p=$1 last; 
    rewrite ^/(forum|[a-z0-9_-]*-f)([0-9]+)/(topic|[a-z0-9_-]*-t)([0-9]+)(-([0-9]+))?\.html$ /viewtopic.php?f=$2&t=$4&start=$6 last; 
    rewrite ^/([a-z0-9_-]*)/?(topic|[a-z0-9_-]*-t)([0-9]+)(-([0-9]+))?\.html$ /viewtopic.php?forum_uri=$1&t=$3&start=$5 last; 
    rewrite ^/resources/[a-z0-9_-]+/(thumb/)?([0-9]+)$ /download/file.php?id=$2&t=$1 last; 
    rewrite ^/post([0-9]+)\.html$ /viewtopic.php?p=$1 last; 
    rewrite ^/active-topics(-([0-9]+))?\.html$ /search.php?search_id=active_topics&start=$2&sr=topics last; 
    rewrite ^/unanswered(-([0-9]+))?\.html$ /search.php?search_id=unanswered&start=$2&sr=topics last; 
    rewrite ^/newposts(-([0-9]+))?\.html$ /search.php?search_id=newposts&start=$2&sr=topics last; 
    rewrite ^/unreadposts(-([0-9]+))?\.html$ /search.php?search_id=unreadposts&start=$2 last; 
} 

注:我沒有測試過所以它可能不完美或最好,但你應該能夠從這裏調整它。

+0

按照你的建議嘗試了2個配置,沒有一個適合我。希望我只是犯了一些錯誤。 第一種方法:http://pastebin.com/JT2LaSPn 第二種方法:http://pastebin.com/zciC3Stv – Demontager 2013-03-08 19:33:52

+0

對不起,它不工作。稍後我會給它一個更好的外觀,我需要設置一個phpbb的測試實例。 – Brendan 2013-03-08 22:17:50

+0

更具體地說,我在URL上添加了測試 - tangoresults.com。我在這裏啓用了phpBBSEO。例如,線程有非sef網址 - http://tangoresults.com/viewtopic.php?f=6&t=3它對應於當前 - http://tangoresults.com/topic3.html phpBBSEO生成.htaccess http:// pastebin.com/eLphHJN1文件,我改編爲http://pastebin.com/mZjJh8F9 – Demontager 2013-03-10 13:18:42

0

您需要編寫nginx conf文件,以便它的行爲類似於apache htaccess多視圖。

的phpBB SEO,你要在你的conf文件的底部添加此位置聲明:

#added the ability to do multiviews for subforums 
    location ~ ^(.+)/$ { 
    try_files $uri $1.html?$args; 
} 

這應該讓你有搜索引擎優化的論壇鏈接。

希望這可以幫助你開始。