2011-07-23 10 views
5

Próbuję zrobić mod_rewrite pierwszy ciąg podkatalogów z adresu url w celu stworzenia podobnej funkcjonalności jak "urs jsfiddle.net zapisany w klasie/db. Skrypt działa dobrze i wykonuje przepisanie.mod_rewrite z Trailing Slash łamie ścieżki CSS/IMG/SCRIPTS

np. URL

http://jsfiddle.net/RyEue/ 

To działa w porządku (ładuje wszystkie CSS, skrypty, itd.):

http://www.domain.com/787HHJ2 

To właśnie użyłem w przeszłości, która załatwia sprawę.

Problem występuje, gdy końcowy adres URL zawiera ostatni slash, skrypt, css i inne luźne ścieżki.

http://www.domain.com/787HHJ2/ 

przepisać scenariusz:

DirectoryIndex index.php index.html 
Options +FollowSymlinks 
RewriteEngine On # Turn on the rewriting engine 
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{QUERY_STRING} !. 
RewriteRule ^.+/?$ index.php [QSA,L] 

pewien, czy ma to związek z RewriteBase, próbowałem wiele sposobów.

PS. Próbowałem ustawić ścieżki bezwzględne (na przykład src = "/ img/theimage.jpg") bez powodzenia.

+0

Zasada jest w porządku. Proszę włączyć odświeżanie debugowania ('RewriteLogLevel 9') i sprawdź dziennik zmian, aby zobaczyć, co dokładnie się dzieje. – LazyOne

+0

@LazyOne, Twoje prawo. To działa. Problem polega na tym, że łamie on css, ścieżki skryptów. – Codex73

+1

Wyjaśniłem pytanie. Problem polega głównie na tym, że pliki css, skrypty, obrazy i inne zostały uszkodzone podczas korzystania z funkcji końcowej /. – Codex73

Odpowiedz

5

1. Upewnij się, że masz css/images/js itp powiązany w stosunku do głównego folderu (z ukośnika): /styles/main.css

2. Dodać jeden z tych ruls przed prądem jeden:

# do not touch files with .css/.js/.jpg etc extensions 
RewriteRule \.(css|js|jpg|png|gif)$ - [L] 

lub

# do not touch any resources in images/css/js folders 
RewriteRule ^(images|css|js)/ - [L] 

3. Wyczyść pamięć podręczną przeglądarki i uruchom ponownie (czasami przeglądarka może wyświetlać buforowaną stronę/zasób, gdy ustalona została reguła przepisywania, która wprowadza wiele zamieszania).

+0

Dzięki powyższej odpowiedzi udało mi się rozwiązać problem. Połączenie względnych ścieżek z rootem oraz konfigurowanie lokalnych wirtualnych hostów pozwoliło wszystkim działać idealnie. – Codex73

0

Spróbuj uciec

RewriteRule ^.+\/?$ index.php [QSA,L]