Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: htaccess + wildcard + dodatkowe zmienne
Forum PHP.pl > Forum > Serwery WWW
schizoos
Witam!

Potrzebuję pomocy.

Otóż, mam dwa adresy strony przed i po formatowaniu:
http://adres-strony.pl/file.php?user=test
http://test.adres-strony.pl/

Całość działa prawidłowo po wpisaniu następującego kodu w htaccess:
  1. RewriteEngine On
  2. RewriteBase /
  3. RewriteCond %{SCRIPT_FILENAME} -f
  4. RewriteRule .* - [L]
  5. RewriteCond %{HTTP_HOST} !(^www.adres-strony.pl)
  6. RewriteCond %{HTTP_HOST} ^(www\.)?(.*).adres-strony.pl$
  7. RewriteCond %{HTTP_HOST} !^www\. [NC]
  8. RewriteCond %{HTTP_HOST} ^([^\.]+)\. [NC]
  9. RewriteRule ^$ /file.php?user=%1 [QSA]


Do tego adresu muszę jednak dodać dodatkowe zmienne... I tu zaczyna się robić kłopot.
Chciałbym zamienić następujący adres:
http://adres-strony.pl/file.php?user=test&...page=informacje
na:
http://test.adres-strony.pl/informacje/

Próbowałem przeróżnych formuł, np.:
RewriteRule ^/([^/]*)/$ /file.php?user=%1&page=%2 [L]

jednak takie rozwiązania nie działają.

Czy mogę prosić zacne grono o pomoc? Może być to nawet pomoc odpłatna, jeśli tylko ktoś będzie w stanie temu zaradzić, sprawa jest dla mnie niesłychanie pilna.

erix
A po kiego Ci zencjowany ampersand?
schizoos
Zencjował się chyba podczas przeklejania tekstu na forum, w kodzie jest napisany normalnie. Jakieś pomysły?
erix
Po co Ci tyle RewriteCond? Na pewno masz dobrze numerki poszczególnych zmiennych poustawiane?
schizoos
Czy na pewno - nie wiem, ale skrypt działa.
Po co tyle RewriteCond? Raczkuję w temacie htaccess, to raczej nie moja działka, jednak na ten moment potrzebna. Stąd źródła ściągnięte z internetu. Jak to zapisać w prostszej formie - nie mam pojęcia, dlatego też pytam, bo po 6h ślęczenia nad tym kodem udało mi się dojść wyłącznie do momentu, w którym samo przekierowanie na subdomenę działa.
erix
Czyli co teraz nie działa, bo się pogubiłem. biggrin.gif
schizoos
Działa tylko i wyłącznie wildcard na subdomenę, czyli to pierwsze przekierowanie, które podałem na początku pierwszej wiadomości. Ponadto potrzebuję możliwości dodawania nowych zmiennych do zapytania poprzez $_GET, które przetransformuję na linki typu /informacje/ zamiast ?page=informacje.

Jasne toto? smile.gif
erix
[APACHE] pobierz, plaintext
  1. RewriteRule ^(.*)$ /file.php?user=%1&page=$1 [L]
[APACHE] pobierz, plaintext

A jak nie to, to się określ tak, aby nawet dziecko zrozumiało, o co Ci chodzi.
schizoos
To nie to, nie działa - błąd 404.

Nie wiem czy da się jaśniej, ale spróbuję. Mamy kilka linijek odpowiadających za obcięcie www w adresie i zamianę http://adres-strony.pl/file.php?user=test na http://test.adres-strony.pl/. Mianowicie:
  1. RewriteCond %{SCRIPT_FILENAME} -f
  2. RewriteRule .* - [L]
  3. RewriteCond %{HTTP_HOST} !(^www.adres-strony.pl)
  4. RewriteCond %{HTTP_HOST} ^(www\.)?(.*).adres-strony.pl$
  5. RewriteCond %{HTTP_HOST} !^www\. [NC]
  6. RewriteCond %{HTTP_HOST} ^([^\.]+)\. [NC]
  7. RewriteRule ^$ /file.php?user=%1 [QSA]


Powyższe działa prawidłowo. Problem pojawia się w momencie, gdy dopisuję drugą zmienną, np. "page" i chcę zamienić:
  1. http://adres-strony.pl/file.php?user=test&page=informacje

na:
  1. http://test.adres-strony.pl/informacje/


Jeśli wpiszę sobie np. na taki link:
  1. http://test.adres-strony.pl/?page=informacje

lub
  1. http://test.adres-strony.pl/file.php?user=test&page=informacje

to całość działa prawidłowo, jednak chodzi o skrócenie tej ostatniej zmiennej do formy prostej - /informacje/.

Dlaczego nie działa? Nie mam pojęcia, stąd moje pytanie.

Dodam może jeszcze tylko, że w tym samym pliku, ale powyżej znajdują się przekierowania generowane dla Wordpressa (jest zainstalowany w tym samym katalogu, ale omijamy plik index.php i chcemy pracować na file.php):
  1. <IfModule mod_rewrite.c>
  2. RewriteEngine On
  3. RewriteBase /
  4. RewriteRule ^index\.php$ - [L]
  5. RewriteCond %{REQUEST_FILENAME} !-f
  6. RewriteCond %{REQUEST_FILENAME} !-d
  7. RewriteRule . /index.php [L]
  8. </IfModule>


Jednak czy to ma jakiś wpływ na pozostałe przekierowania? Nie sądzę, bo po usunięciu tych linijek dalej mam brak reakcji na link http://test.adres-strony.pl/informacje/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.