2014-01-19 2 views
1

Я нашел хорошую систему входа в систему PHP/MySQL на Github. Для правильной работы файла необходим файл .htaccess. Замечательно. Тем не менее, я использую nginx, а не apache. Как я могу преобразовать эти правила перезаписи в nginx?Преобразование трех правил apache «RewriteCond» в nginx

# Necessary to prevent problems when using a controller named "index" and having a root index.php 
# more here: http://stackoverflow.com/q/20918746/1114320 
Options -MultiViews 

# turn rewriting on 
RewriteEngine On 

# When using the script within a sub-folder, put this path here, like /mysubfolder/ 
# If your app is in the root of your web folder, then please delete this line or comment it out 
RewriteBase /php-login/ 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 

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

Это то, что я пытался, генерируется автоматически с помощью apache-to-nginx rules converter сайта:

location /php-login/ { 
    if (!-e $request_filename){ 
    rewrite ^/php-login/(.+)$ /php-login/index.php?url=$1 break; 
    } 
} 

файлы (например, index.php) были загружены вместо того, чтобы быть открыт. Затем я удалил «break» в конце правила перезаписи. Это сработало. Тем не менее, я хотел бы знать, правильно ли это, или если есть другой лучший способ преобразования этих правил apache в nginx.

+0

, пожалуйста, помогите мне с этим вопросом https://stackoverflow.com/questions/44346456/apache-auth-rules-converted-for-nginx-server –

ответ

0
location ^~ /php-login(.*) { 
    try_files $uri $uri/ /php-login/index.php?url=$1&$query_string; 
} 
+0

Здравствуйте! Спасибо за ответ. Тем не менее, я получаю эту ошибку при запуске nginx с вашим кодом: nginx: [emerg] неизвестная переменная «url» – bazaglia

+0

o да, я добавил ошибку '' 'перед словом' url' по ошибке, я удалю его –

+0

Еще раз спасибо за внимание. Nginx теперь запускается ... Но я получаю ошибку 404 (это означает, что правила перезаписи были неправильно изменены с apache на nginx). Это единственное, что сработало: location/php-login/{ if (! -e $ request_filename) { rewrite ^/php-login /(.+)$ /php-login/index.php?url = $ 1; } } Однако я знаю, что использование «если» внутри местоположения не является наиболее рекомендуемым решением. Любые новые идеи/или изменения в блоке, которые вы сначала предложили? Спасибо. – bazaglia

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