Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][.htaccess] Przyjazne linki po raz n`ty
Forum PHP.pl > Forum > Przedszkole
k0l3c
Do rzeczy:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?m1=$1 [L]
RewriteRule ^(.*)/([^-]+)$ index.php?m1=$1&m2=$2


Głowne menu mam w index.php

..
<li><a href="/oferta">Oferta</a></li>
..
if($_GET['m1'] == 'oferta') {
include('menu/oferta.php');
}
..


Jak widać, to menu mam w podkatalogu i działa powiedzmy ok.
Problem pojawia się jak chcę wejść w podkategorię, do czego potrzebuje dwóch zmiennych.

TO JEST oferta.php
..
<li><a href="/oferta/automatyka">Automatyka</a></li>
..
<div id="zawartosc">
if($_GET['m2'] == 'automatyka') {
include('menu2/automatyka.php');
}
</div>


I tutaj powinienem za pomocą m1 includować menu/oferta.php, a za pomocą m2 menu2/automatyka.php.

Jeżeli adres wygląda tak: domena.pl/?m1=oferta&m2=automatyka
to wszystko działa, jednak jak już wygląda tak: domena.pl/oferta/automatyka
to nie chce.

Dodam, że jest to chwilowo na subdomenie i domena.pl/oferta działa prawidłowo.

Co robię źle?
uzyj
http://htaccessredirect.net/
SmokAnalog
Zamień miejscami te reguły. Zauważ, że Twoja reguła ^(.*)$ wyłapie wszystko, łącznie z kategoria/podkategoria, więc do drugiej reguły nigdy nawet nie dojdziesz.

Ale i tak polecam coś takiego:
[APACHE] pobierz, plaintext
  1. RewriteEngine on
  2. RewriteCond %{REQUEST_FILENAME} !-f
  3. RewriteCond %{REQUEST_FILENAME} !-d
  4. RewriteRule ^(.+)$ index.php?route=$1 [L,QSA]
[APACHE] pobierz, plaintext


O wiele bardziej lubię mieć uniwersalny plik .htaccess, a regułami sobie zarządzać w pliku PHP. Czyli w Twoim przypadku byś sobie np. rozbijał $_GET['route'] po znaku / i w zależności od liczby elementów coś tam sobie robił.
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.