2014-05-23 155 views
0

我試圖以下(PHPVibe)轉換的.htaccess規則來gninx:轉換的.htaccess nginx的重寫規則

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteBase/
RewriteRule ^embed/([^/]*)/$ /embed.php?id=$1 [L] 
RewriteRule ^feed(.*)$ feed.php [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/?$ index.php?rp=$1 [L] 
</IfModule> 
<ifModule mod_headers.c> 
    Header set Access-Control-Allow-Origin: * 
</ifModule> 

這是我到目前爲止有:

rewrite ^/embed/([^/]*)/$ /embed.php?id=$1 last; 
    rewrite ^/feed(.*)$ /feed.php last; 
if (!-f $request_filename){ 
    set $rule_2 1$rule_2; 
} 
if (!-d $request_filename){ 
    set $rule_2 2$rule_2; 
} 
if ($rule_2 = "21"){ 
    rewrite ^/(.*)/?$ /index.php?rp=$1 last; 
} 

的上面的大部分工作,除了它在我的非mod_rewrite相關頁面上返回404。

回答

0

嘗試插入下面的代碼你其他的RewriteRules

RewriteRule ^moderator - [NC] 

之前應該引起重寫引擎跳過與/主持人開頭的網址/

+0

但這是一個.htaccess規則。我試圖將上述規則轉換爲nginx。沒有必要在htaccess規則中包含排除條件,但似乎nginx是必要的,這是我需要幫助的地方。 – Micah

0
location/{ 
    try_files $uri $uri/ @index; 
} 

location /embed/ { 
    rewrite ^/embed/([^/]+)/$ /embed.php?id=$1; 
} 

location /feed { 
    rewrite^/feed.php; 
} 

location @index { 
    rewrite ^/(.*)/?$ /index.php?rp=$1; 
} 

location ~ \.php$ { 
    # fastcgi directives 
} 
+0

這會導致gnix配置錯誤,並且它看起來不像解決排除「/ moderator」目錄的主要問題。 – Micah

+0

有一個錯字。它只是不包括版主目錄。你沒有說明如何處理版主dir –

+0

我只是希望重寫規則明確地排除它,因爲它使用原始規則返回404。 順便說一下,它仍然無法正常工作。它現在導致php代碼下載。我的版本沒有問題的工作。我只是想能夠排除主持人文件夾。 – Micah

0

所以,一些調整後,我終於想出了適合nginx的重寫指令。如果有人想知道。

rewrite ^/embed/([^/]*)/$ /embed.php?id=$1 last; 
    rewrite ^/feed(.*)$ /feed.php last; 
if (!-e $request_filename) 
    { 
     rewrite ^/(.*)/?$ /index.php?rp=$1 last; 
    }