SubZero.
8.02.2009, 17:53:36
Witam,
Używam .htaccess do skracania adresów URL, dokładnie dwóch funkcji.
Pierwsza funkcja zamienia adres typu "adres.pl/english", a druga "adres.pl/english/about":
#
# 1 "adres.pl/english"
#
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ index.php?lang=$1 [L]
#
# 2 "adres.pl/english/about"
#
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?lang=$1&page=$2 [L]
Ale teraz mam problem, ponieważ jeśli używam adresu "adres.pl/img/picture001.jpg" to .htaccess też zamienia ten adres według drugiej funkcji. Moje pytanie czy można coś z tym zrobić?
Ponieważ języki są zdefiniowane w tej aplikacji, czy na przykład można zrobić tak aby .htaccess zamieniał tylko jeśli w pierwszej funkcji wystąpią wyrazy "english, polish, itd." ?
Maxik
8.02.2009, 18:00:14
RewriteRule ^(polish|english)$ index.php?lang=$1
Ale radziłbym zamiast / używać ,
SubZero.
8.02.2009, 18:06:32
Cytat(Maxik @ 8.02.2009, 18:00:14 )

RewriteRule ^(polish|english)$ index.php?lang=$1
Ale radziłbym zamiast / używać ,
Dzięki Maxik!
A czemu radzisz używać "," zamiast "/"?
Maxik
8.02.2009, 18:08:00
Nie ma wtedy problemów z folderami(/ jest traktowane jako ścieżka).
nexis
8.02.2009, 18:13:31
Kod
RewriteEngine On
# Sprawdza czy plik istnieje oraz czy nie jest pusty
RewriteCond %{REQUEST_FILENAME} -s [OR]
# Sprawdza czy adres nie jest istniejącym linkiem symbolicznym
RewriteCond %{REQUEST_FILENAME} -l [OR]
# Sprawdza czy adres nie jest istniejącym katalogiem
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*)/(.*)$ /index.php?lang=$1&page=$2 [NC,L]