WordPress + mod_rewrite

3 Cevap php

Ben ön sayfa çoğunlukla statik ve bunun gerçek blog bölümü bir standart üzerinde ön sayfa sanki temelde davranan bir özel sayfa şablonu kullanan yeni bir sayfaya taşındı bir CMS olarak Wordpress kullanın Wordpress yükleyin. Bu oldukça iyi çalışıyor ama yine de birkaç hata var. Ana bir Sayfalandırması artık iş, Wordpress oluşturulan sayfa URL'leri tanımaz olacaktır.

Şimdiye kadar doğru URL'leri (yerine domain.com/page/2 arasında domain.com/blog/page/2) görüntülemek için Wordpress konfigüre ettik ve ben de bir blog aracılığıyla mesajların belirli bir sayfayı görüntülemek için kazanılmış ettik URL parametresi (domain.com / blog? page = N). Yani temelde neredeyse bitti, ben sadece / blog? Page = N. domain.com için domain.com / blog / sayfa / N haritasına ihtiyaç Sadece düz eski statik bir site olsaydı, bu kolay bir görev olurdu, ama Wordpress ben buna müdahale edilebilir inanıyorum kendi URL işleme kullanıcısı var - söz değil "blog" da geçmesi gerekiyor bu yüzden gerçek bir URL değil düzenli ... Ben yeniden yazma kuralları için N veya NS bayraklarını kullanmanız gerekebilir düşünürdüm ama sadece yok gibi Wordpress oluşturulan URL'yi işleyebilir iki kez, blog pagination haritalama için, ve bir kez daha böylece kuralları Ben onları kullanmak istiyorum biliyorum

Ben geldim kural:

RewriteRule ^/blog/page/([0-9]+)$ /blog?page=$1

. Default Wordpress htaccess:

RewriteEngine On  
RewriteBase /  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule . /index.php [L]

Bazı önerileri başı olarak, ben. Htaccess için ele verdik, ama hala tanımıyor.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule /blog/page/([0-9]+)$ /blog?page=$1 [N,QSA]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Ve ben URL parametresi üzerinden sayfayı değiştirmeden çalışır eminim - elle URL numarasını değiştirmek ve sayfayı değiştirmek aslında yok. Herhangi bir fark yaparsa, web sunucusu, LiteSpeed ​​olduğunu

3 Cevap

Ben (bir kaç gün sonra - Ben şimdiye kadar bu konuda unuttum) sonunda onu anladım. İlk olarak, Wordpress güncellenmiş olduğundan emin olun. Zaman ben 2.5 veya 2.6 kullanıyordum ama güncellenen kadar nedense işe yaramadı.

Birincisi, özel bir şablon oluşturmak. Ana sayfanız bu yüzden ve tüm caz özelleştirmek için bu şablonu kullanacak. Blogunuza Mesajları listelemek için WP döngü ihtiyacı böylece şablon blog index sayfası için kullanılacak - "Ana Dizin" (index.php) yalnız şablon bırakın.

Şimdi gidip iki sayfaları oluşturabilirsiniz. Ana sayfa için bir ("ev" diyelim) ve blogunuz için başka bir (en "blog" diyelim). "Ev" sayfasında, önceden oluşturduğunuz sayfası şablonuna şablonu ayarlayın. Blog sayfasında, varsayılan şablon üzerine bırakın - varsayılan olarak "Ana Dizin" şablonu kullanacak.

Şimdi, "Okuma" ayarlarına gidin ve değiştirmek için "statik sayfa." Ön sayfa için, önceden oluşturduğunuz "ev" sayfasını seçin. Mesajlar sayfa için oluşturduğunuz "blog" sayfası seçin.

İşte bu olmalıdır. Aslında bu önceden denemişti ama boşuna, bu yüzden yönlendirme kurallarını kullanarak çalıştı işe yaramadı. Ben WP yüklemek tarih dışı bir varlık sona erdi. Yüklü bir site haritası mod varsa, örümcekler example.com / evde ana sayfanın bir kopyasını almak yok bu yüzden "ev" sayfayı hariç emin olun. Ayrıca emin olmak için robots.txt koyabilirsiniz.

İşiniz bittiğinde, etki kök (example.com /) (WP orada yüklü varsayarak) "ev" sayfaya işaret eder. Sizin blog sayfası (example.com / blog) Mesajınızı listeler. Beklendiği gibi sayfalama (example.com/blog/page/2 vb) çalışacaktır.

Aşağıdaki deneyin

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule /blog/page/([0-9]+)$ /blog?page=$1 [R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Ya da deneyin

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^blog/page/([0-9]+)$ /blog?page=$1 [NC,N]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [NC,L]
</IfModule>

NC duyarsız harfe yapar, N o kuralları yeniden yapmak, ve L kural işlemeyi durdurur.