Skocz do zawartości
Zaloguj się, aby obserwować  
Quam

Nginx + .htaccess

Polecane posty

Witam,

 

Przsiadłem się z apache na Nginx. Nie potrafie poradzić sobie z htaccess nie wiem jak przerobić oraz czy trzeba cos podawać w nginx.conf. Proszę o pomoc osoby z większą wiedzą jak przerobić poprawnie ten plik.

 

 

 SetEnv PHP_VER 5

Options +FollowSymLinks

<IfModule mod_rewrite.c>
RewriteEngine On

# Profile Show #
RewriteRule ^profile_show,(.*),(.*),nb.html?$ index.php?act=profile_show&user=$1&step=$2&no_body=1 [NC]
RewriteRule ^profile_show,(.*)-(.*),(.*).html?$ index.php?act=profile_show&user=$1&step=$3 [NC]
RewriteRule ^profile_show,(.*)-(.*).html?$ index.php?act=profile_show&user=$1 [NC]

# Other #
RewriteRule ^(.*),(.*),(.*),(.*),nb.html?$ index.php?act=$1&step=$2&add=$3&add2=$4&no_body=1 [NC]
RewriteRule ^(.*),(.*),(.*),nb.html?$ index.php?act=$1&step=$2&add=$3&no_body=1 [NC]
RewriteRule ^(.*),(.*),nb.html?$ index.php?act=$1&step=$2&no_body=1 [NC]
RewriteRule ^(.*),(.*),(.*).html?$ index.php?act=$1&step=$2&add=$3 [NC]
RewriteRule ^(.*),(.*).html?$ index.php?act=$1&step=$2 [NC]
RewriteRule ^(.*).html?$ index.php?act=$1 [NC]
</IfModule>

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

 

rewrite ^/profile_show,(.*),(.*),nb.html?$ /index.php?act=profile_show&user=$1&step=$2&no_body=1;

rewrite ^/profile_show,(.*)-(.*),(.*).html?$ /index.php?act=profile_show&user=$1&step=$3;

rewrite ^/profile_show,(.*)-(.*).html?$ /index.php?act=profile_show&user=$1;

rewrite ^/(.*),(.*),(.*),(.*),nb.html?$ /index.php?act=$1&step=$2&add=$3&add2=$4&no_body=1;

rewrite ^/(.*),(.*),(.*),nb.html?$ /index.php?act=$1&step=$2&add=$3&no_body=1;

rewrite ^/(.*),(.*),nb.html?$ /index.php?act=$1&step=$2&no_body=1;

rewrite ^/(.*),(.*),(.*).html?$ /index.php?act=$1&step=$2&add=$3;

rewrite ^/(.*),(.*).html?$ /index.php?act=$1&step=$2;

rewrite ^/(.*).html?$ /index.php?act=$1;

 

Pomocne:

 

http://www.anilcetin.com/convert-apache-htaccess-to-nginx/

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ok dzieki

 

Mam to umieścić w htaccess ? i powinno działać ?

 

czy musze cos robic jeszcze w conf.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

@UP szybszy, do kasacji.

 

Powinno być okej:

rewrite ^/profile_show,(.*),(.*),nb.html?$ /index.php?act=profile_show&user=$1&step=$2&no_body=1 last;
rewrite ^/profile_show,(.*)-(.*),(.*).html?$ /index.php?act=profile_show&user=$1&step=$3 last;
rewrite ^/profile_show,(.*)-(.*).html?$ /index.php?act=profile_show&user=$1 last;

# Other #
rewrite ^/(.*),(.*),(.*),(.*),nb.html?$ /index.php?act=$1&step=$2&add=$3&add2=$4&no_body=1 last;
rewrite ^/(.*),(.*),(.*),nb.html?$ /index.php?act=$1&step=$2&add=$3&no_body=1 last;
rewrite ^/(.*),(.*),nb.html?$ /index.php?act=$1&step=$2&no_body=1 last;
rewrite ^/(.*),(.*),(.*).html?$ /index.php?act=$1&step=$2&add=$3 last;
rewrite ^/(.*),(.*).html?$ /index.php?act=$1&step=$2 last;
rewrite ^/(.*).html?$ /index.php?act=$1 last;

Edytowano przez Portek (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ok dzieki

 

Mam to umieścić w htaccess ? i powinno działać ?

 

czy musze cos robic jeszcze w conf.

 

Musisz to wrzucic tam gdzie masz skonfigurowanego hosta, czyli np. w

/etc/nginx/sites-enabled/default

 

w sekcji server {}

 

nginx nie obsługuje plików htaccess

Edytowano przez elcct (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Zrobiłem ale nie dziła coś sad.png "404 Not Found"

 

server {
listen 80;
root /home/www/portal;
index index.html index.htm index.php;

# Make site accessible from http://localhost/
server_name www.portal.domena.pl portal.domena.pl;

location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(.*)$;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/portal/$fastcgi_script_name;
}


location / {
root /home/www/portal;
index index.php;
rewrite ^/profile_show,(.*),(.*),nb.html?$ /index.php?act=profile_show&user=$1&step=$2&no_body=1 last;
rewrite ^/profile_show,(.*)-(.*),(.*).html?$ /index.php?act=profile_show&user=$1&step=$3 last;
rewrite ^/profile_show,(.*)-(.*).html?$ /index.php?act=profile_show&user=$1 last;

rewrite ^/(.*),(.*),(.*),(.*),nb.html?$ /index.php?act=$1&step=$2&add=$3&add2=$4&no_body=1 last;
rewrite ^/(.*),(.*),(.*),nb.html?$ /index.php?act=$1&step=$2&add=$3&no_body=1 last;
rewrite ^/(.*),(.*),nb.html?$ /index.php?act=$1&step=$2&no_body=1 last;
rewrite ^/(.*),(.*),(.*).html?$ /index.php?act=$1&step=$2&add=$3 last;
rewrite ^/(.*),(.*).html?$ /index.php?act=$1&step=$2 last;
rewrite ^/(.*).html?$ /index.php?act=$1 last;
}

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Pozwolicie się że podepnę się do tematu, mam taką regułkę w .htaccess:

 

RewriteEngine On
RewriteCond   %{REQUEST_URI} \/([0-9,a-z,_,-,\!]+)$ [NC]
RewriteRule   ^(.*) show.php?%1 [L]

Prosiłbym o przerobienie to na język zrozumiały dla nginx smile.png A tamten generator według mnie trochę nie bardzo sobie z tym poradził.

 

Podjąłem męską decyzję migracji stron bo apache z nie wiadomych przyczyn zamula (choć dużo mądrzejsza ode mnie osoba z tego forum próbowała bezskutecznie znaleźć przyczynę)

Edytowano przez Maq (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Używając podanej wcześniej strony:

if ($uri ~* "/([0-9a-z_-,!]+)$"){

set $rule_0 1$rule_0;

}

if ($rule_0 = "1"){

rewrite / /;

}

Nie wiem czy przed ! nie warto dać \, żeby go nie zrozumiało jako przeczenia.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

dzięki, po testuję na dniach, bo mi tamta strona generowała jedynie:

#ignored: condition 0

if ($rule_0 = "1"){

rewrite / /;

}

w pierwszej kolejności poprzerzucam najpierw statyczne strony

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wyrzuca błędy, bo za dużo przecinków tam dałeś. Warto pokombinować ze zmianą regexa na czas tłumaczenia, a potem wstawienia starego z Apache. Nie wiem czy wiesz, ale konstrukcja

[0-9,a-z,_,-,\!]+
To dokładnie to samo co
[0-9a-z,_-\!]+
, ponieważ przecinek powinieneś dodać tylko raz. Jeśli go nie dopuszczasz w danym stringu to w ogóle go nie podawaj. Przed myślnikiem też można spróbować dać \, bo wtedy może traktować _-\ jako zakres od podkreślnika do backslasha.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Poradziłem sobie już wcześniej, przepisałem ręcznie kod według tutka znalezionego w necie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×