Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mod_rewrite] Ładowanie panelu admina, Jak to zrobić najlepiej?
WebCM
post
Post #1





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

Ostrzeżenie: (0%)
-----


Chcę, aby mod_rewrite przepisywał linki do pliku admin/index.php, jeżeli użytkownik wpisze: domena.com/admin Niestety nie udaje mi się uzyskać zadowalającego efektu. Plik .htaccess:
Kod
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9_/]+)$ index.php?a=$1 [L,QSA]
Co należy dopisać, aby serwer rozpoznawał, że trzeba przekierować do panelu admina? Po wpisaniu domena.com/admintest powinna wyświetlić się już właściwa strona (nie panel admina).

Może lepiej wszystkie żądania przekierować do 1 pliku index.php i dopiero tam rozpoznać, czy trzeba przejść do PA, czy do witryny? URL dzielę na fragmenty w ten sposób:
Kod
$URL = isset($_GET['a']) ? explode('/',$_GET['a']) : array('main');
Rozważmy adres: domain.com/admin/categories
W przypadku przekierowania mod_rewrite ID modułu ("categories") znajduje się w $URL[0]. Natomiast gdy wszystkie żądania odbiera index.php, nazwa modułu PA jest przechowywana w $URL[1]. Nie będę mógł potem zmienić sposobu przekierowania bez edycji wszystkich plików lub stosowania trików.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Matte
post
Post #2





Grupa: Zarejestrowani
Postów: 35
Pomógł: 7
Dołączył: 4.04.2009
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----


Kod
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^admin/([A-Za-z0-9_/]+)$ admin/index.php?a=$1 [L,NC]
RewriteRule ^admin$ admin/index.php [L,NC]

Jeżeli dobrze zrozumiałem ; )
Go to the top of the page
+Quote Post
WebCM
post
Post #3





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

Ostrzeżenie: (0%)
-----


Nie działa poprawnie. Po wpisaniu "admin" w pasku adresu widać katalog "admin", zaś jest wyświetlana strona główna. Wcześniej jeszcze przepisuję adresy z "localhost" do "localhost/folder", ale to raczej nie ma znaczenia. Chyba, że mam stworzyć kolejny plik .htaccess w folderze "admin" i dodać dodatkowe reguły - ale i tak Apache ich nie uwzględni.

Który sposób zapewni większą stabilność i wydajność?

1. Przepisywanie linków z /admin/ za pomocą .htaccess

2. Użycie 1 pliku index.php, który:
a) dołączy panel admina, gdy $URL[0] === 'admin'
b) wyświetli właściwą podstronę na podstawie $URL[0], gdy $URL[0] != 'admin'

Ten post edytował WebCM 30.04.2009, 18:13:59
Go to the top of the page
+Quote Post
szagi3891
post
Post #4





Grupa: Zarejestrowani
Postów: 109
Pomógł: 9
Dołączył: 12.03.2007
Skąd: kraków/tarnobrzeg/baranów/suchorzów

Ostrzeżenie: (0%)
-----


A może tak :
Kod
<?php
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/admin/
RewriteRule (.*) index.php?a=$1 [L,QSA]
?>


Wszystkie żądania zostaną skierowane do pliku głównego oprócz katalogu "admin". Czy o to Ci chodziło ?

Ten post edytował szagi3891 30.04.2009, 21:10:29
Go to the top of the page
+Quote Post
WebCM
post
Post #5





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

Ostrzeżenie: (0%)
-----


Postanowiłem, że wszystkie żądania będzie odbierał plik index.php. Teraz stoję przed kolejnym problemem.

Na początku przypomnę, że w głównym katalogu (localhost) znajduje się .htaccess w regułką:
Kod
RewriteEngine On
RewriteRule (.+) /strona/$1 [L,QSA]
Po prostu nie chcę edytować pliku host w systemie. Ona raczej nie ma znaczenia, choć może mylę się?

Katalog strona zawiera kolejny .htaccess:
Kod
php_value session.use_only_cookies 1
php_value session.use_trans_sid 0
php_value register_globals 0
php_value magic_quotes_gpc 0

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d - regułka zbędna
RewriteRule (.*) index.php?a=$1 [L,QSA]
W katalogu strona znajduje się folder admin. Niestety, jeżeli w URL-u odwołam się do folderu admin, Apache przekierowuje przeglądarkę do: localhost/strona/admin/?a=admin

Nie rozumiem, dlaczego. Co robię źle?
Go to the top of the page
+Quote Post
Matte
post
Post #6





Grupa: Zarejestrowani
Postów: 35
Pomógł: 7
Dołączył: 4.04.2009
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----


Co do drugiego problemu problemu, wywal flagę QSA. Powinno załatwić sprawę.
Go to the top of the page
+Quote Post
WebCM
post
Post #7





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

Ostrzeżenie: (0%)
-----


Wywaliłem z obu plików .htaccess i nic to nie dało.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 04:34