2014-01-19 1 views
1

Github에 멋진 PHP/MySQL 로그인 시스템이 있습니다. 제대로 작동하게하려면 .htaccess 파일이 필요합니다. 훌륭합니다. 것은,하지만, 나는 아파치가 아니라 nginx를 사용합니다. 이 재 작성 규칙을 nginx로 어떻게 변환 할 수 있습니까?세 개의 아파치 "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를 같은) 대신 열리지의 다운로드되고 있었다. 필자는 다시 쓰기 규칙이 끝날 때 "중단"을 제거했습니다. 그것은 효과가 있었다. 그러나 이것이 올바른지 또는이 아파치 규칙을 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

네, 실수로'url '단어 앞에'$'를 추가했습니다. 나는 그것을 제거 할 것입니다 –

+0

관심을 가져 주셔서 다시 한 번 감사드립니다. 이제 Nginx가 시작됩니다 ...하지만 404 오류가 발생합니다 (재 작성 규칙이 apache에서 nginx로 올바르게 변경되지 않았다는 것을 의미합니다). 이것은 작동 한 유일한 것입니다 : 위치/php-login/{ if (! -e $ request_filename) { 다시 작성 ^/php-login /(.+)$ /php-login/index.php?url = $ 1; } } 그러나 위치 안의 "if"를 사용하는 것이 가장 권장되는 해결책이 아닙니다. 처음에 제안한 블록의 새로운 아이디어 또는 변경 사항은 무엇입니까? 감사합니다. – bazaglia

관련 문제