2015-05-15 10 views
11

blog sayfası sayfasını statik PHP web sitem için WordPress olarak oluşturuyorum. Blog sayfası URL'si pretty permalink (example.com/blog/my-post-page) olarak değiştiğinde, single.php içeriği yerine blog klasörünün dışında bulunan içeriklerin (index.php'ye yönlendirilmemesi, yalnızca içeriklerin yüklenmesi ve URL'nin http://example.com/blog/my-post-page gibi olması) index.php (sitem için ana sayfa)) .Sadece bir sayfa için blog klasörünün dışında bulunan index.php içeriği yükleniyor

belirtildiğinde, default (example.com/blog/?p=123) değiştiğinde, mükemmel çalışır.

http://example.com/blog/my-post-page olarak URL'ye ihtiyacım var.

DÜZENLEME: - Özel Yapıya /index.php/%postname%/ olarak permalink'i güncelledim. Ancak şimdi posta sayfaları example.com/blog/index.php/my-post-page ile gösteriliyor.

Bu sorunun yeni WordPress sürümü ile gündeme geldiğini düşünüyorum. (Sürüm 4.2.2). index.php URL'sini kaldırmak için herhangi bir çözüm var mı?

Benim Dizin Yapısı: -

/           - Root 
/blog          - Blog folder 
/blog/wp-content/themes/mytheme/   - Theme folder 
/blog/wp-content/themes/mytheme/single.php - Post Single page 

/index.php         - Home page (Loading contents of this file) 

Benim htaccess: -

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /blog/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

G/silme kök klasöründe index.php adlandırmak

, sayfa bulunamadı göstermek olacaktır hatası.

+0

Sana (blog' dizininin 'dışında, kök biri) index.php'' bahsediyoruz ve 'tek konum kısmını alamadım aşağıdaki .htaccess olarak değiştirin. php' (bu nedir? Bu dosyanın burada ne yapması gerekiyor?) –

+2

@JustinIurman Gönderi sayfam indeks.php ve post detail sayfası tek.php'dir (WP concept). Burada sorun, dış blog klasöründe index.php (site için ana sayfa) olarak adlandırılan başka bir dosya var. Blogda post detay sayfasına güzel permalink (example.com/blog/my-post-page) olarak eriştiğimde, blog klasörümün dışındaki index.php dosyasına yönlendirilir.Sonra permalink'i /index.php/%postname%/ olarak Özel Yapı olarak değiştirdim. Sonra, ayrıntı sayfası doğru yükleniyor ancak bağlantı index.php (example.com/blog/index.php/my-post-page) içeriyor. – Sree

+0

Eh, sadece emin olmak için ... WP dizininiz 'blog' doğru mu? Sorunuzu mevcut WP htaccess'inizle günceller misiniz? Blog klasörü dizini yerine kök dizinine yeniden yazmak garip olduğu için ... –

cevap

2

Size url için herhangi bir düzenli ifade ifadesi bu hat url sonra /blog/ şeyle başlarsa / olacaktır demektir

RewriteRule ^/blog/\(.+)$ /blog/index.php?postname=$1 

sizin durumunuzda yeniden yazabilir htaccess yılında

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /blog/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 
+0

Bunu denediniz. Çalışmıyor. – Sree

+5

oldukça benzer bir durumda, bir göz atın https://wordpress.org/support/topic/pretty-permalinks-redirects-to-indexphp –

+2

Evet. Yukarıdaki bağlantıdan permalink'i /index.php/%postname%/ olarak güncelledim. Ancak şimdi posta sayfaları example.com/blog/index.php/my-post-page ile gösteriliyor. Nasıl kaldırılır? wp-admin Kalıcı Bağlantılar (/wp-admin/options-permalink.php) içinde – Sree

3

çalışması gerekir /blog/index.php'a postname parametresi olarak geçti. example.com/blog/my-post-pageexample.com/blog/index.php?postname=my-post-page

bu kurala bir şey hariç tutabilir olarak yeniden olurdu

örneğin en bu dışlamak bakalım: /blog/wp-content/themes/mytheme/ böyle gider:

RewriteRule ^(?!/(.+)/(.+)/(.+)/(.+))/blog/\(.+)$ /blog/index.php?postname=$1 
+0

Tam htaccess kodu ile cevap güncelleme lütfen misiniz? – Sree

+0

Uygulamak istediğiniz tüm yeniden yazma kurallarını tam olarak anlamadım. Tam haritayı yorumlayabilir misiniz? example.com/blog/my-post-page 'içinde ->' example.com/blog/index.php? postname = sayfam-sayfamın bu tür biçimi? –

0

Burada iki değişiklik yapmaları gerekir permalink'u /%postname%/ olarak değiştirin.

ve

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase /blog/ 
    RewriteRule ^index\.php$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /blog/index.php [L] 
</IfModule> 
İlgili konular