Mircy, potrzebuję pomocy z 2 regułami w .htaccess: by mieć jednocześnie przekierowanie na wariant z www a także przekierowanie z www.domena.com na www.domena.com/pl/ również dla podstron, poniższy kod nie do końca się sprawdza:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteRule ^(.*)$ http://www.%{HTTPHOST}%{REQUESTURI} [L,R=301]

RewriteCond %{REQUEST_FILENAME} !/pl/
RewriteRule ^(.*)$ /pl/$1 [R=301,L]

Na www naturalnie przekierowuje bo to prosta sprawa, jednak przy doklejaniu /pl/ się zapętla i tworzy /pl/pl/pl/pl/pl -
@astra2k: ja mam to samo w wampie niestety. ide pograc sobie potem pomoge cos jeszcze

na linuksie mi smiga normalnie a na wampa nawet nie dziala mi

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^pl/(.*)$ test.php
  • Odpowiedz
@astra2k: blisko, ale nie powinieneś łapać tylko po samym "www."

RewriteBase /
RewriteCond %{HTTP_HOST} !^example\.com/pl/$ [NC]
RewriteRule ^(.*)$ http://example\.com/pl/$1 [QSA,L,R=301]

czy jakos tak
  • Odpowiedz
@Duolingo: Na jakich adresach testujesz? Przekombinowane, ale wygląda OK. Drugi warunek łapać powinien:
- /dupa/
- /dupa/dupa
Masz hosting na home czy gdzieś indziej (na home mają swój moduł do rewrite, działający trochę inaczej)?
  • Odpowiedz
@Vealheim: Znalazłem takie oto rozwiązanie :)

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)$ ?v=$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)?$ ?v=$1&action=$2 [L]
  • Odpowiedz
Mireczky, serdeczna prośba o pomoc, bo nie ogarniam. Potrzebuję w mod_rewrite przepisać adres URL w sposób następujący:

[http://twojadomena.pl](http://twojadomena.pl) -> [http://twojadomena.pl/index.html?zmienna=wartosc](http://twojadomena.pl/index.html?zmienna=wartosc)

[http://twojadomena.pl/index.html](http://twojadomena.pl/index.html) -> [http://twojadomena.pl/index.html?zmienna=wartosc](http://twojadomena.pl/index.html?zmienna=wartosc)

I nie mam pojęcia, jak to zrobić poprawnie.

Czy ktoś mógłby mi podpowiedzieć jak to ugryźć? Czy potrzeba dwóch linii z przekierowaniami, czy jakoś za pomocą regexpów należałoby to zrobić w jednej linii?

#webdev #apache #modrewrite
@b0b3k: a jeszcze jedno, bo widzę, że nie do końca dało to efekt. Mój projekt nie znajduje się w głównym folderze serwera, tylko w podfolderze. To co wkleiłeś (oczywiście zamieniając #options na Options) wklepałem do pliku .htaccess i wrzuciłem do folderu z projektem. Czy coś w związdku z tym powinienem dodać do reguł? Jakiś basedir czy coś?
  • Odpowiedz
@breja: @Jaslanin: aktualnie mam takie coś:

RewriteEngine On
RewriteBase /
RewriteRule ^detale_oferta_([0-9]+)_(.+)/$ ^detale_oferta/?id=$1 [L]
i taki link:

adres.pl/detale_oferta_3891721_testtest/
i oczywiście #!$%@? nie dziala :/
  • Odpowiedz
#webdev #linux #modrewrite #htaccess #paypal

Na stronie realizuję płatności przez paypala i po dokonaniu płatności, paypal przenosi uzytkownika z powrotem na moją stronę, ale dodaję kilka zmiennych GET, finalnie url wygląda tak:

http://domena.com/sklep/platnosc/?tx=32122ERU1312&st=Completed&amt=100.00&cc=PLN&cm=2

No i chciałbym zrobić modrewrite, żeby przekazał mi zarówno "sklep", "platnosc" oraz ten ciąg dodany przez modrewrite, próbowałem różnymi sposobami np:

#rewriterule ^sklep/platnosc/?(.*)$ index.php?url=sklep/platnosc/$1/ [QSA,L,B]

oraz różne wariacje wyrażeń regularnych (tych w nawiasie) i flag. Jednak za
@Zaszczyk: Jak zobaczyłem przekazywanie GETem kwoty płatności, to aż mnie ciarki przeszły - to co zrobiłeś to jest szablonowy przykład pod ataki CSRF (XSRF), tak się nie robi. Ktoś spreparuje link w 2 minuty, atakując w ten sposób Twoich klientów, i generując im "lewe" transakcje. Przekazuj POSTem to raz, ale sam post nie wystarcza, on tak samo jest podatny na CSRF. Wprowadź jakieś Tokeny do każdej transakcji + by było dobrze
  • Odpowiedz
Od godziny męczę się z pierdołą -.- Jak zrobić w mod_rewrite RewriteRule, gdy nie ma nic po domenie? Na przykład: www.wykop.pl i chcę, żeby to mi wywołało index.php z jakimiś parametrami, coś w stylu:

RewriteRule ^$ index.php?site=main [L] - tylko, że to nie działa...

Przerobiłem już kilkadziesiąt kombinacji i nic.

#webdev #htaccess #modrewrite
@Cilthal: Pewnie admini #!$%@? konfigurację apacha o ile na nim hostują. A mpc też mi się źle kojarzy, może dlatego że kiedy zadałem pytanie na wyższym poziomie to prawie nigdy nie było odpowiedzi.
  • Odpowiedz