mod_rewrite biçembentin kaybına neden olur

3 Cevap php

Benim URL (duh) bazı temizlemek için mod_rewrite kullanarak ve ben o çalışma var. Sayılır. Bu doğru sayfaya yönlendirir, ama stil görünmüyor. . İşte htaccess benim kod:

RewriteEngine on
RewriteRule ^blog/([^/\.]+)/?$ post.php?page=$1 [L]

Peki ne oluyor? Bu arada, mod_rewrite çalışma benim ilk kez.

3 Cevap

Bu göreceli bağlantıları kullanıyorsanız, CSS link yeni URL'ler tarafından bozuldu olabilir. örn:

Stylesheet link used: ../css/stylesheet.css
Old page: /blog/example/post.php
New page: /blog/2009/12/example/post.php

This break would affect images too. An easy way to fix this is to decide upon the definitive URL for the CSS and absolute link it. e.g.

/css/stylesheet.css

Bu yapının içinde nerede olduğunu umursamamak anlamına geleceğini, CSS (veya görüntüleri, bu rutin takip ederseniz) ok göstermek istiyorum.

CSS (/ blog / style.css varsayın Lets) post.php olacak? Page = style.css

Saptamak için, ben RewriteEngine sonra bu hakkını koyarak öneririm

RewriteCond %{SCRIPT_FILENAME} -f
RewriteCond %{SCRIPT_FILENAME} -d

Yani doğrudan dosyaya, bir CSS / JS dosyası gibi dosya var bütün isteklerini iletecek.

Gelecekte, ben bir tarayıcıda URL'ye tarama önermek ve bunu neden nerede olduğunu görmek. Bu tarayıcıda işe yaramazsa, bu sayfa için çalışmaz.

Muhtemelen göreli URL'ler farklı eski URL'ler ile daha giderilmiş olduğunu neden sadece yeni URL'ler bulunuyor. Böyle mutlak bir URL yolu ile bunu deneyin:

/style/screen.css

Bunun yerine bir göreli URL yolu gibi:

style/screen.css
./style/screen.css