2009-03-01 22 views
3

Ben Joomla 1.5.9 php 5.2.8 ile çalışan bir vista 64 dev kutusunda IIS7 üzerinde MySQL 5.1.31 var. Ben hem SEO Ayarları "Arama Motoru Dostu URL'ler" ve "Apache mod_rewrite kullan" doğru çalışıyor.Joomla Search Engine Kolay URL'ler sorunu IIS7 üzerinde

Ayrıca barındırılan bir site kuruyorum (www.mochahosting.com ile). Aynı yazılımın biraz eski versiyonlarını kullanmaktadırlar: Joomla 1.5.5, php 5.2.6, mySQL 5.0.4x. Ayrıca, IIS7'yi kullanırlar, ancak Windows 32'de çalışırlar.

üzerinde barındırılan sitede çalışmak için SEO ayarlarından hiçbirini alamıyorum (yerel ayarlarımda çalışmam için SEO ayarlarını aldım) aynı yapılandırma). Sadece işleri basitleştirmek için "Arama Motoru Dostu URL'ler" ile başlayalım.

Ayrıca, henüz bir etki alanı adına sahip değilim, bu yüzden siteye erişmek için bir ana bilgisayar takma adı kullanıyorum. Kimsenin bu soruna cevap vermek için bu belaya girmesini beklemiyorum, bu yüzden sadece konuyu anlatacağım ve insanların neler olup bittiğini anlayabilecek yeterince iyi bir iş yapmasını umuyorum. Bu sorunun amacı için http://nodomainyet.com/joomla156_mx temel URL (diğer bir deyişle, joomla giriş sayfası) olarak kullanacağım. Evet, bu Joomla'nın bir alt dizine kurulduğunu ima ediyor - bu bir sorun olup olmadığından emin değilim (bu benim dev kutusunda bir sorun değil).

Sorun hakkında.

"Arama Motoru Dostu URL'leri" açma, bir 404 ("Bileşen bulunamadı") oluşturmak için http://nodomainyet.com/joomla156_mx neden olur. 404 hata sayfasında http://nodomainyet.com/joomla156_mx/index.php'a giden bir bağlantı var - ve bu link çalışıyor. "Arama Motoru Dostu URL’leri" kapatırsam hem http://nodomainyet.com/joomla156_mx hem de http://nodomainyet.com/joomla156_mx/index.php çalışır. Demek ki ben (çeşitli ana menü bağlantılara gidebilirsiniz http://nodomainyet.com/joomla156_mx/index.php ve oradan giderseniz "Motoru Dostu URL'ler Ara" açarak, Şimdi durmasına http://nodomainyet.com/joomla156_mx/index.php için http://nodomainyet.com/joomla156_mx arasında "otomatik yönlendiriliyor" ...

neden olduğunu görünüyor Sadece yeni bir Joomla örneğiyle yüklenen varsayılan joomla sitesini kullanıyorum), o zaman her şey iyi çalışıyor. Sadece işe yaramayan http://nodomainyet.com/joomla156_mx'a gidiyor. Ana menüdeki "ev" bağlantısının varsayılan olarak http://nodomainyet.com/joomla156_mx'a gittiğine dikkat etmek gerekir. "Kullan - İkinci SEO ayarın açılması benim dev kutusunun buna ana bilgisayarda phpinfo çıkışını karşılaştırıldığında ettik ve bu soruna neden olur bir farklılık göremedim

...

Apache mod_rewrite "- sorunu çözmüyor (bu ayarın amacının, URL’de index.php’ten kurtulmak olduğu için olabilir).

Çalışmak için "Arama Motoru Dostu URL'ler" genellikle çok önemsiz görünüyor - bir web.config gerektirmez ve kuralları yeniden yazma ... Bunun yanlış gitmesine neden olabilir emin değilim.


Güncelleme - 2009-03-03 Ben sadece ("Kullanım Apache mod_rewrite ilk SEO ayarı ("Arama Motoru Dostu URL'ler") açmak için kötü bir fikir olduğunu düşünmüştüm

") (" Kendi Aracımdaki "Arama Motoru Dostu URL'leri" başlatabilirsem de iyi çalışıyor). Bu yüzden, birkaç tane daha denemeler denedim

Belki de sorun, URL yeniden yazımının ana bilgisayardaki IIS7'de düzgün şekilde ayarlanmamış olmasıydı. http://learn.iis.net/page.aspx/461/creating-rewrite-rules-for-the-url-rewrite-module'da açıklanan (ilk) test dosyasını yaptım ve işe yaradı - böylece URL yeniden yazmanın çalıştığı anlamına geliyor.

O zaman belki de sorun şu ki, IIS7'deki Joomla'nın her yerde gördüğü yeniden yazma kurallarının alt dizini göz önünde bulundurmak için yeniden yazılması gerekiyor. Yukarıda söylediğim gibi, SEO ayarları yerel makinemde iyi çalışıyor. Joomla ayrıca bir alt dizine kurulur ve her şey iyi çalışıyor. Yine de,

<rewrite> 
    <rules> 
     <rule name="Imported Rule 1" enabled="true"> 
      <match url="(.*)" ignoreCase="false" /> 
      <conditions logicalGrouping="MatchAll"> 
       <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" /> 
       <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" pattern="" ignoreCase="false" /> 
       <add input="{SCRIPT_NAME}" negate="true" pattern="^/joomla156mx/index.php" ignoreCase="false" /> 
       <add input="{SCRIPT_NAME}" pattern="(/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$" /> 
      </conditions> 
      <action type="Rewrite" url="joomla156mx/index.php" /> 
     </rule> 
    </rules> 
</rewrite> 

için

<rewrite> 
    <rules> 
     <rule name="Imported Rule 1" enabled="true"> 
      <match url="(.*)" ignoreCase="false" /> 
      <conditions logicalGrouping="MatchAll"> 
       <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" /> 
       <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" pattern="" ignoreCase="false" /> 
       <add input="{SCRIPT_NAME}" negate="true" pattern="^/index.php" ignoreCase="false" /> 
       <add input="{SCRIPT_NAME}" pattern="(/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$" /> 
      </conditions> 
      <action type="Rewrite" url="index.php" /> 
     </rule> 
    </rules> 
</rewrite> 

gelen yazma kuralı değiştirmeye çalıştı (yani, durumuna ve harekete dizin adını prepending). Bu bir fark yaratmadı. Şimdi, kuralları yeniden yazmak için tamamen yeniyim, bu yüzden bir şeyleri mahvedebilirim.

Sanırım hiçbir yönlendirme kuralı olmaması şüpheli buluyorum; &'u 'yeniden yazılan' bir URL'ye yapıştırırsam anlam ifade eder, bir şey yapmaz bir URL olan sunucuya söylemek zorunda değilsiniz ve gerçek bir URL'ye yönlendirilmeli midir? Ama yine de, bu benim yerel kutuda düz eski yeniden yazma kuralları ile çalışıyor, bu yüzden yanlış ağacın havlaması olabilir.

Yardımın için teşekkürler!

cevap

2

Sorun, barındırma şirketinin kullanmadığı sorun oldu. FastCGI php çalıştırmak için. Phpinfo() çalıştırırken "Server API = CGI/FastCGI" yazsa bile, fastcgi'nin kullanılmasını garantilemek YETERLİ DEĞİLDİR.

CGI veya ISAPI kullanımıyla ilgili sorun nedir? İkisinin de Joomla'nın kullandığı php değişkeni _SERVER ["REQUEST_URI"] ile ilgili sorunları var.

FastCGI kullanılıp kullanılmayacağını olup olmadığını kesin anlamaya nasıl benim diğer soruya bakın: Bir web sitem www.carooolglobal.com var How to know for sure if FastCGI is being used to run php scripts

2

Bu sayfadaki son adımlar, Enabling Search Engine Friendly URLs numaralı telefondan yürür. Varsayılan Joomla By

sorgu dize o web sitesi için oluşturulan tüm bağlantıları URL'ler için parametrelerini kullanır. Bu davranışı, Joomla'da "Arama Motoru Dostu URL'ler" olarak adlandırılan etkinleştirilerek değiştirilebilir. Ancak, bu özellik , web sunucusunda web sunucusunda kullanılabilir olacak şekilde yeniden yazılmasına bağlıdır. IIS 6.0, URL yeniden yazma yeteneklerine sahip değildir, bu nedenle ürününü ISAPI_Rewrite veya Ionics ISAPI Yeniden Yazma Filtresi gibi üçüncü taraf URL'lerinden birini yeniden yazabilirsiniz. IIS 7.0, IIS 7.0 için Microsoft URL Yeniden Yazma Modülünü yükleyen tarafından etkinleştirilebilen URL'yi yeniden yazarak yeniden yazmaktadır. Aşağıdaki yönergeleri, IIS 7.0 için Yeniden Yazma Modülünün, Joomla'daki URL'leri Temizle'yi olarak nasıl kullanabileceğini açıklar.
İlk olarak, Microsoft URL Yeniden Yazım Modülü'nü indirip yüklemeniz gerekir. Yüklendikten sonra, C: \ inetpub \ wwwroot \ Joomla klasöründe bulunan bir web.config dosyası oluşturun ve açın. Aşağıdaki XML kodunu bu dosyaya yapıştırın.

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
    <rewrite> 
     <rules> 
     <rule name="Security Rule" stopProcessing="true"> 
      <match url="^(.*)$" ignoreCase="false" /> 
      <conditions logicalGrouping="MatchAny"> 
      <add input="{QUERY_STRING}" pattern="mosConfig_[a-zA-Z_]{1,21}(=|\%3D)" ignoreCase="false" /> 
      <add input="{QUERY_STRING}" pattern="base64_encode.*\(.*\)" ignoreCase="false" /> 
      <add input="{QUERY_STRING}" pattern="(\&lt;|%3C).*script.*(\>|%3E)" /> 
      <add input="{QUERY_STRING}" pattern="GLOBALS(=|\[|\%[0-9A-Z]{0,2})" ignoreCase="false" /> 
      <add input="{QUERY_STRING}" pattern="_REQUEST(=|\[|\%[0-9A-Z]{0,2})" ignoreCase="false" /> 
      </conditions> 
      <action type="CustomResponse" url="index.php" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" /> 
     </rule> 
     <rule name="SEO Rule"> 
      <match url="(.*)" ignoreCase="false" /> 
      <conditions logicalGrouping="MatchAll"> 
      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" /> 
      <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" pattern="" ignoreCase="false" /> 
      <add input="{URL}" negate="true" pattern="^/index.php" ignoreCase="false" /> 
      <add input="{URL}" pattern="(/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$" /> 
      </conditions> 
      <action type="Rewrite" url="index.php" /> 
     </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 
</configuration> 

kaydet web.config dosyası ve daha sonra açık web tarayıcısı ve http://localhost/joomla/administrator/ de Joomla yönetici konsola oturum
. Bir kez Siteye gidin oturum -> aşağıdaki gibi genel yapılandırma menüsü yapılandırmak SEO ayarları:

  • Arama Motoru Dostu URL'ler - Evet
  • Apache mod_rewrite'ı - Evet
  • URL'lerine sonek ekle - Yok
  • kaydet yapılandırma "Uygula" yı tıklayıp ardından http://localhost/joomla/'a gidin.Artık Joomla sayfalarındaki tüm bağlantıların sorgu dizesi parametreleri olmayan URL'leri olduğunu ve bu bağlantılardan herhangi birine tıklarsanız sunucunun doğru yanıtı döndüreceğini göreceksiniz:

    +0

    Cevabınız için teşekkürler. Ancak, yerel makinemde ve barındırılan sitede de benzer talimatlar zaten takip ettim; Yerel makinemde çalışıyor ancak barındırılan site çalışmıyor ... Bu yüzden barındırılan sitede nasıl teşhis edileceğine dair biraz daha fazla ayrıntıya ihtiyacım var. – Jimmy

    0

    tüm özellikler olarak ayarlanmış tüm SEO ayarıyla iyi çalışır

    SEO ayarlarından herhangi birini Evet olarak ayarlıyorum ve ana sayfanın sol tarafındaki arama formundan bir arama gerçekleştirirseniz, index.php üzerindeki sonuçları düzgün şekilde gösterir. arama sonucu, açılır pencerede kişinin profilini açmalı, ancak pop penceresi

    bu sitede eksik girilmiş bir adres bu sayfaya erişimi yok için bir out-of-tarih girişinin olması dışı bir güncel imi/favori bir arama motoru: sebebiyle bu sayfayı ziyaret edebilmek İstenen kaynak bulunamadı. İsteğiniz işlenirken bir hata oluştu. aşağıdaki sayfalarından birini deneyin:

    Ana Sayfa

    sorunlar devam ederse, bu sitenin sistem yönetici ile iletişim kurun.

    Ben clueless

    Selamlar Kislay bu kaplıydı olmadığından emin değilim

    0

    henüz, ben baktım ama eksik bir şeyler iyiyim duyuyorum.

    Eğer arama motoru dostu linkler ile ilgili sorunlar iseniz, joomla yüklü olduğu klasöre gidin ve

    Bu 404 sorunu çözmek gerekir .htaccess sizin htaccess.txt dosyasını yeniden adlandırın.

    +0

    '.htaccess' IIS7 tarafından kullanılmıyor – rtpHarry