Problem z htaccess

0

Witam, mam dziwny problem z htaccess. Otóż wszystko działa jak należy, mam tam dużo wpisów typy

RewriteCond %{REQUEST_URI} kategoria-789.html$

RewriteCond %{QUERY_STRING} ^$

RewriteRule ^(.*)$ http://www.stronka.pl/w-kategorii-789.html [L,R=301]  

i takich wpisów jest z 50 dla każdej kategorii.
Nie będę tego komentował bo poprawiam to po kimś, ale fakt faktem to działa bez zarzutu.
Problem pojawia się gdy ściągam plik na komputer edytuję go i dopisuję kolejną kategorię

RewriteCond %{REQUEST_URI} kategoria-790.html$

RewriteCond %{QUERY_STRING} ^$

RewriteRule ^(.*)$ http://www.stronka.pl/w-kategorii-790.html [L,R=301] 
 

Jak widać nic specjalnego nie robię, tylko dodaję kolejny wpis, jednak po zapisaniu pliku i uploadzie na serwer, po odświeżeniu strony mam error 500, strona główna i każda podstrona error 500, co ciekawe po wycofaniu mojego ostatniego wpisu zapisie i uploadzie, wszystko wraca do normy, jak to możliwe że dopisanie kolejnej reguły tak działa na serwer?

0

Może serwer ma dość debilnych setek wpisów zamiast jednego?

RewriteCond %{QUERY_STRING} ^$
RewriteRule kategoria-([0-9]+).html$ http://www.stronka.pl/w-kategorii-$1.html [L,R=301] 
0

a co w takim razie z regułą?

 RewriteCond %{REQUEST_URI} kategoria-790.html$
0

RewriteRule testuje właśnie REQUEST_URI, więc to co koleś napisał to zbędne powtórzenie. Dodatkowo jeżeli QUERY_STRING nie będzie pusty (czyli będą dopisane parametry, typu kategoria-666.html?dupa=jasia to przekierowanie NIE nastąpi. Nie wiem czy to ma sens w Twoim przypadku, pewnie też jest do usunięcia.

0

Tzn chyba powinno być odwrotnie:? tylko jak?

RewriteRule [adres jakiego chcemy używać] [prawdziwy adres pliku] [dodatkowe parametry(znaczniki dyrektywy)] 

Adres mam: http://www.stronka.pl/kategoria-789.html

a chcę mieć

http://www.stronka.pl/w-kategorii-789.html

0

Zrób jak napisałem i będzie dobrze.

0

OK zrobiłem tak jak podałeś i niestety nie przekirowuje mnie, tzn w stronie mam link http://www.stronka.pl/kategoria-789.html i docelowo ma przepisać na http://www.stronka.pl/w-kategorii-789.html

0

Podaj cały htaccess jaki masz (teraz jak wywaliłeś setki wpisów raczej długi nie będzie)

0
Options +FollowSymLinks

RewriteEngine On

RewriteCond %{QUERY_STRING} ^$
RewriteRule kategoria-([0-9]+).html$ http://www.stronka.pl/w-kategorii-$1.html [L,R=301] 

RewriteRule ^([^-]*).html$ index.php?page=$1 [L]

RewriteRule ^([^-]*)-([^-]*).html$ index.php?page=$1&id=$2 [L]

RewriteRule ^([^-]*)-([^-]*)-([^-]*).html$ index.php?page=$1&id=$2&kategoria=$3 [L]

 
0

Przekopiowałem ten kod w całości i wrzuciłem u siebie i... działa.

a dopisz pod RewriteEngine On takie coś: RewriteBase / (ale u mnie działa bez tego)

Swoją drogą nie działa Ci zarówno z Twojego komputera, jak i na serwerze właściwym?

0

Na serwerze właściwym zadziałało tylko enter na końcu trzeba było dostawić na lokalnym plik wygląda tak:

 
Options +FollowSymLinks
 
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^$
RewriteRule kategoria-([0-9]+).html$ 127.0.0.1/ok/w-kategorii-$1.html [L,R=301]

Tu przpisuje adres ładnie tylko nie odnajduję tej strony np. w-kategorii-3.html pewnie dlatego że dostawia www przed 127.0.0.1 (oczywiście strona fizycznie istnieje)

Tylko chciałbym zrozumieć jak to działa bo wg wzorca z tego forum reguły tworzy się tak

RewriteRule [adres jakiego chcemy używać] [prawdziwy adres pliku] [dodatkowe parametry(znaczniki dyrektywy)]  

Czyli u mnie adres jakiego chcę używać to: w-kategorii-3.html a prawdziwy adres to kategoria-3.html czyli jakby popatrzeć to całkowicie odwrotnie, tylko tej kwestii właśnie nie rozumiem

0

Nazewnictwo tego, kto to pisał jest co najmniej mówiąc nieszczęśliwe i pewnie wprowadzające w błąd.

adres jakiego chcemy używać - Wzorzec adresu, który ma być wyłapany
prawdziwy adres pliku - Plik który ma zostać użyty do obsłużenia żądania (w przypadku rewrite), bądź na który będzie przekierowanie (w przypadku redirecta -- to robisz ty)

Czyli ty chcesz wyłapać "kategoria-JAKAŚLICZBA.html" i zamienić to na w-kategorii-JAKAŚLICZBA.html

Swoją drogą - pisanie domeny jest zbędne, jeżeli jest taka sama.

To, że dostawia www. przed adresem ip to fakt - nie zadziała tak. Ale może poczytaj o wirtualnych hostach w apache i projekty sobie rób w subdomenach localhost? (Np. strona1.localhost to jakiś tam jeden projekt, a strona2.localhost to drugi - bo teraz zdaje się używasz jednego folderu i jednej domeny (a konkretnie adresu IP), w którym podmieniasz sobie projekty gdy jest taka potrzeba o_O)

Ale jak już działa na serwerze to git.

1 użytkowników online, w tym zalogowanych: 0, gości: 1