2015-09-08 4 views
2

Вопрос о переводе RazorCMS (razorcms.co.uk) переписывает правило, но я думаю, что ответ может быть общим..htacces (x2) to nginx rewrite - различные правила в подкаталоге (RazorCMS)

У меня есть два файла .htacces. Сначала находится в основном каталоге (/). Я перевел:

RewriteRule ^(.*)$ index.php?path=$1 [L,QSA] 

в

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

Там нет проблем с этим.

Второй файл .htacces находится в подкаталоге (/ rars). Содержимое внутри:

RewriteRule ^login/u/(.*)/p/(.*)$ index.php?login=1&u=$1&p=$2 [L,QSA] 
RewriteRule ^login index.php?login=1 [L,QSA] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?path=$1 [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L,QSA] 

Я попытался перевести его на различные правила:

location /login { rewrite ^/login/u/(.*)/p/(.*)$ /index.php?login=1&u=$1&p=$2 break; } 
location /login { rewrite ^/login /index.php?login=1 break; } 
location /rars { if (!-e $request_filename){ rewrite ^(.*)$ /index.php?path=$1; } } 

... но она не работает.

Как перевести правила .htaccess в Nginx, если второй файл .htaccess находится в подкаталоге? Можете ли вы указать мне в правильном направлении?

ответ

1

Nginx не имеет контекстов каталогов, поэтому вам необходимо указать полный путь в этом месте. Попытка:

location /rars/login { rewrite ^/rars/login/u/(.*)/p/(.*)$ /rars/index.php?login=1&u=$1&p=$2 break; } 
location /rars/login { rewrite ^/rars/login$ /rars/index.php?login=1 break; } 
location /rars { if (!-e $request_filename){ rewrite ^/rars/(.*)$ /rars/index.php?path=$1; } } 
+0

Спасибо. Это было полезно. Я изменил конфигурацию на: 'location/login { rewrite ^/login/u /(.*)/ p /(.*)$ /rars/index.php?login=1&u=$1&p=$2 break; rewrite ^/login $ /rars/index.php?login=1 break; ) location/rars {rewrite ^/rars /(.*)$ /rars/index.php?path=$1 last;} ' ... и он работает, но если я перехожу в/login вместо выполнения /rars/index.php?login=1 nginx отправляет мне файл «login» с php-кодом внутри. Все еще ищет ошибку в конфиге. –

Смежные вопросы