Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 230 Pomógł: 3 Dołączył: 8.01.2008 Ostrzeżenie: (10%)
|
Często na stronach internetowych spotykam się z takimi adresami podstron: site.com/contact. Jak takie coś najprościej uzyskać? Robi się to korzystając z RewriteRule? I czy nie ma jakichś przeciwwskazań co do stosowania czegoś takiego?
Ten post edytował Apocalyptiq 20.11.2008, 20:43:46 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 230 Pomógł: 3 Dołączył: 8.01.2008 Ostrzeżenie: (10%)
|
Poprzednio .htaccess umieściłem w folderze siatka, ale teraz umieściłem w głównym i też nie działa.
DZIAŁA! Połączyłem sposób sowiq'a - .htaccess w folderze siatka, RewriteRule ^(.*)$ index.php?page=$1 [L], oraz RewriteCodition'y bronchos'a, teraz całość wygląda tak: Kod RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?page=$1 [L] No i ten .htaccess znajduje się w folderze siatka. Co do RewriteCond - jest to zabezpieczenie przed tym, żeby nie przerabiało adresów do istniejących plików (-f) i folderów (-d). A co znaczy flaga [L] przy RewriteRule? Na stronie Apacha nie mogę tego znaleźć... I niby nieco znam się na regex'ach, ale co znaczy znak dolara za ^(.*)? I znak "^" przed tym - w regex'ach kojarzy mi się on z wykluczaniem, ale chyba tylko w wyrażeniach w []. Cytat Anchors: ^ Start of line anchor $ End of line anchor Czyli stosuje się to do ograniczania tej pierwszej ścieżki? Z lewej i prawej, czyli w moim przypadku - wyjmuje to cały adres po siatka/. A jakby się tych kotwic nie dało, to jak byłby interpretowany (.*)? Cytat 'last|L' (last rule) Stop the rewriting process here and don't apply any more rewriting rules. This corresponds to the Perl last command or the break command from the C language. Use this flag to prevent the currently rewritten URL from being rewritten further by following rules. For example, use it to rewrite the root-path URL ('/') to a real one, e.g., '/e/www/'. Czyli gdyby były jakieś inne RewriteRule'y, to to [L] zapobiegnie dalszym przeróbką danego adresu? I jeszcze pytanie co do formularzy - jak mam np. formularz logowania, to dotąd miałem action="index.php?page=log". W tym log wykonywało się logowanie i przekierowywało na głowną. Zmiana na action="log" będzie ok (działa), czy może lepiej dać dla formularzy jakieś inne zasady? Np. pliki tylko wykonywujące coś, jak np. log, a nie będące podstroną, wsadzić w inny katalog i wywoływać je po staremu (np. inc/log.php) Spotkałem się też z flagą [NC] - służy do tego, aby rozpoznawanie adresów nie było czułe na wielkość liter, może warto tą flagę też użyć (od strony pozycjonowania i wygody dla użytkownika)? Niby jak jest jakiś adres, to jest ok - chyba że ktoś skopiowałby adres i gdzieś zmienił na dużą literę np. jakąś jedną małą literę. Warto się w to bawić (bo i od strony przechwytywania $_GET['page'] trzebaby to przerobić)? Aha, no i teraz trzebaby jakoś uporządkować linki na stronie - podawać teraz wszędzie adresy bezwzględne? Np. nie "log", tylko "http://esiatkarze.net/log"? Bo jeżeli np. będę na stronie http://esiatkarze.net/player/4, to jak będzie gdzieś link team, to mnie przekieruje chyba na http://esiatkarze.net/player/team a nie na http://esiatkarze.net/team? Czy może napisać jakąś funkcję, ustawiającą wszystkie url'e na stronie - ale wtedy, będąc na http://esiatkarze.net/player/4, względny adres do team musiałby wyglądać tak: "../team", tak? Lepiej bawić się w takie coś czy podawać wszędzie adresy bezwględne? Znalazłem spoko artykuł o takim przepisywaniu adresu: http://www.northpole.pl/przyjazne-linki/ Wziąłem stamtąd rewrite dwupoziomowy: Kod RewriteEngine on DirectoryIndex index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([a-zA-Z-_0-9]+)/([a-zA-Z-_0-9]+)/?$ ?page=$1&id=$2 [L] RewriteRule ^([a-zA-Z-_0-9]+)/?$ ?page=$1 [L] Który ładnie działa, ale takie coś: Kod RewriteEngine on DirectoryIndex index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]+)/([^/]+)/?$ ?page=$1&id=$2 [L] RewriteRule ^([^/]+)/?$ ?page=$1 [L] Już mi nie chce działać - wie może ktoś dlaczego? Zamieniłem [a-zA-Z-_0-9] na [^/] (wszystkie znaki oprócz slasha). Wrzuciłem taki .htaccess na ovh (to darmowe konto, 60free): Kod RewriteEngine on DirectoryIndex index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([a-zA-Z-_0-9]+)/([a-zA-Z-_0-9]+)/?$ ?page=$1&id=$2 [L] RewriteRule ^([a-zA-Z-_0-9]+)/?$ ?page=$1 [L] I na ovh wywala mi taki komunikat (przy normalnym adresie storny): Cytat The server encountered an internal error and was unable to complete your request If you are owner of that account and you are looking for more information about Internal Server Error pleas visit http://60free.ovh.org/en/support/ or check if: - attributes of file '/index.php' are 705, - attributes of directory are 705, - in '.htaccess' file there is no any unavailable entries No i to "attributes of file '/' zmienia się, w zależności co się wpisze jako adres. Co jest nie tak z tym? Czy coś na ovh nie działa? Adres do tej strony, na której umieściłem ten .htaccess: http://result.ovh.org/ Nadałem index.php - chomda 777, i tak nie działa. Ten post edytował Apocalyptiq 26.11.2008, 19:43:15 |
|
|
|
Apocalyptiq Zamiast /index.php?page=contact - /contact 20.11.2008, 20:43:09
marcio Tak jest to mod_rewrite a przeciwskazania sa do uz... 20.11.2008, 20:46:19
Apocalyptiq Nie wiem czy ja robie coś nie tak, czy xampp (serw... 20.11.2008, 21:58:34
sowiq Zdefiniuj najpierw pojęcie Nie działa.
Jeśli wrzu... 20.11.2008, 22:14:13
Apocalyptiq Zadziałało - przedtem plik .htaccess wrzuciłem do ... 20.11.2008, 22:52:15
bronchos Zobacz tak...
Kod RewriteEngine On
RewriteBa... 20.11.2008, 23:26:21
Apocalyptiq Nie znajduje takiej strony:
CytatNot Found
The re... 20.11.2008, 23:28:28
bronchos .htaccess oczywiscie w / 21.11.2008, 00:17:17
erix CytatA co znaczy flaga [L] przy RewriteRule? Na st... 26.11.2008, 20:49:49
Apocalyptiq Takie coś:
KodRewriteEngine On
DirectoryIndex inde... 26.11.2008, 23:25:42
sowiq Jeśli się mylę, to mnie poprawcie.
[X] oznacza zb... 26.11.2008, 23:31:39
erix CytatMi się wydaje, że w [] nie by... 27.11.2008, 12:20:02 ![]() ![]() |
|
Aktualny czas: 24.12.2025 - 07:58 |