Próbuję uzyskać podstawowe przekierowanie adresu URL dla ładnych adresów URL, a ze względu na obrazy, CSS itp. Również znajdujące się w tej samej ścieżce, muszę się upewnić, że jeśli adres URL jest dostęp bez końcowego ukośnika, jest dodawany automatycznie.Jak wykonać przekierowanie mod_rewrite do względnego adresu URL
Działa to dobrze, jeśli mogę umieścić bezwzględny adres URL tak:
RewriteRule ^myParentDir/([A-Z0-9_-]+)$ http://www.mydomain.com/myParentDir/$1/ [R,nc,L]
Ale jeśli zmienię to względny adres URL, tak, że nie trzeba zmieniać za każdym razem, gdy porusza się rzeczy w folderach to po prostu nie działa.
Są co próbowałem i wszystko nie działa, lub przekierować mnie do rzeczywistego wewnętrznego ścieżki do katalogu na serwerze jak/public_html/...:
RewriteRule ^myParentDir/([A-Z0-9_-]+)$ ./myParentDir/$1/ [R,nc,L]
RewriteRule ^myParentDir/([A-Z0-9_-]+)$ myParentDir/$1/ [R,nc,L]
Jaki jest właściwy sposób zrobić przekierowanie URL tak, że jeśli użytkownik wprowadzi coś takiego:
http://www.mydomain.com/somedir/myVirtualParentDir/myVirtualSubdir
dostaje przekierowany do (poprzez HTTP 301 lub 302):
http://www.mydomain.com/somedir/myVirtualParentDir/myVirtualSubdir/
Dzięki.
EDYCJA: Dodaje więcej szczegółów, ponieważ nie wydaje się jasne. Powiedzmy, że implementuję galerię i chcę mieć ładne adresy URL za pomocą mod_rewrite. Więc chciałbym mieć adresy URL w następujący sposób:
http://www.mydomain.com/somedir/galleries/cats
które pokazuje miniatury kotów, przy czym:
http://www.mydomain.com/somedir/galleries/cats/persian
który pokazuje jeden obraz z miniaturkami wszystkich kotów, nazwanych perski. Więc w rzeczywistości fizycznej struktury katalogów i przepisywanie będzie w następujący sposób:
http://www.domain.com/somedir/gallery.php?category=cats&image=persian
Więc to, co chcę zrobić, to umieścić plik .htaccess w/katalog, który łapie wszystkie żądania skierowane do/galerie oraz w zależności od wirtualne podkatalogi następujące go, wykorzystywać je jako zastępcze w przepisywanie, z reguły 2 przepisywania:
RewriteRule ^galleries/(A-Z0-9_-]+)/$ ./gallery.php?category=$1 [nc]
RewriteRule ^galleries/(A-Z0-9_-]+)/+([A-Z0-9_-]+)$ ./gallery.php?category=$1&image=$2 [nc]
teraz problemem jest to, że skrypt galerii w rzeczywistości potrzebuje trochę CSS, JavaScript i obrazy, znajdujący się http://www.domain.com/somedir/css, http://www.domain.com/somedir/js i http://www.domain.com/somedir/images odpowiednio.
Nie chcę kodować bezwzględnie żadnych bezwzględnych adresów URL, więc CSS, JS i obrazy będą kierowane za pomocą względnych adresów URL (./css, ./js, ./images itp.). Więc mogę zrobić nadpisywania URL następująco:
RewriteRule ^galleries/[A-Z0-9_-]+/css/(.*)$ ./css/$1 [nc]
Problem polega na tym, że od http://www.domain.com/somedir/galleries/cats jest katalogiem wirtualnym, powyższe działa tylko wtedy, gdy użytkownik wpisze:
http://www.domain.com/somedir/gallaries/cats/
Jeśli użytkownik pomija ukośnik mod_dir nie doda go, ponieważ w rzeczywistości katalog ten w rzeczywistości nie istnieje.
Jeśli mogę umieścić przepisać przekierowania bezwzględną URL to działa:
RewriteRule ^galleries/([A-Z0-9_-]+)$ http://www.mydomain.com/subdir/galleries/$1/ [R,nc,L]
Ale nie chcę mieć przedrostek URL sztywno, ponieważ chcę, aby móc umieścić to na cokolwiek chcę domeną w cokolwiek podkat chcę, więc próbowałem to:
RewriteRule ^galleries/([A-Z0-9_-]+)$ galleries/$1/ [R,nc,L]
Ale zamiast to przekierowuje do:
http://www.mydomain.com/home/myaccount/public_html/subdir/galleries/theRest
, co oczywiście nie jest tym, czego chcę.
EDIT: Dalsze wyjaśnienia
Rozwiązanie szukam jest uniknięcie hardcoding nazwę domeny lub ścieżki folderu w pliku .htaccess. Szukam rozwiązania, w którym, jeśli zapakuję .htaccess wraz z resztą skryptów i zasobów, gdziekolwiek użytkownik rozpakuje go na swoim serwerze sieciowym, działa on po wyjęciu z pudełka. Wszystkie takie prace poza tym końcowym ukośnikiem.
Więc jakiekolwiek rozwiązanie, które wiąże się z zakodowaniem katalogu nadrzędnego lub ścieżki serwera w. Htaccess w jakikolwiek sposób, nie jest tym, czego szukam.
@DoktorJ Czy edycja mojego wpisu odpowiada na pytanie? –
Powinieneś wybrać akceptowaną odpowiedź, jeśli któraś z nich pomogła. – sjas