2009-03-01 10 views
3

私はJoomla 1.5.9をPHP 5.2.8で動作させています。私はSEO設定 "Search Engine Friendly URL"と "Use Apache mod_rewrite"が正しく動作しています。IIS7でJoomla検索エンジンに優しいURLの問題

私はまた、ホストされたサイト(www.mochahosting.com)を設定しています。彼らは、Joomla 1.5.5、php 5.2.6、mySQL 5.0.4xという、同じソフトウェアの若干古いバージョンを使用しています。また、IIS7を使用していますが、Windows 32でも稼働しています。ののSEO設定を取得することはできません。ローカルマシン上で動作するSEO設定を取得しました。同じ構成)。物事をシンプルに保つために、「検索エンジンフレンドリURL」から始めましょう。

また、私はまだドメイン名を持っていないので、ホストファイルのエイリアスを使用してサイトにアクセスします。私は誰もがその問題を解決するために苦労することを期待していないので、私は問題を説明し、私は人々が何が起こっているのかを理解できる十分な仕事をすることを願っています。この質問の目的で、http://nodomainyet.com/joomla156_mxをベースURL(joomlaのホームページ)として使用します。はい、これは、Joomlaがサブディレクトリにインストールされていることを意味します - これは問題であるかどうかはわかりません(私の開発ボックスでは問題ありません)。

問題が発生しました。

「検索エンジンフレンドリーなURL」をオンにすると、http://nodomainyet.com/joomla156_mxは404(「コンポーネントが見つかりません」)を生成します。 404エラーページにはhttp://nodomainyet.com/joomla156_mx/index.phpにリンクがあり、そのリンクが機能します。 「Search Engine Friendly URLs」をオフにすると、http://nodomainyet.com/joomla156_mxhttp://nodomainyet.com/joomla156_mx/index.phpの両方が機能します。だから、私が(各種メインメニューのリンクに移動しhttp://nodomainyet.com/joomla156_mx/index.phpにし、そこから行く場合、「エンジンフレンドリーなURLを検索する」をオンにすると、今すぐに動作を停止するhttp://nodomainyet.com/joomla156_mx/index.phpからhttp://nodomainyet.com/joomla156_mxの「自動リダイレクト」...

を起こしているようです私は新しいjoomlaのインスタンスでインストールされるデフォルトのjoomlaサイトを使用しています)、すべて正常に動作します。 http://nodomainyet.com/joomla156_mxに行くと動作しません。メインメニューにある "home"リンクはデフォルトでhttp://nodomainyet.com/joomla156_mxになります。 「使用を - 2番目のSEOの設定をオンに私は私のdevのボックスのように、ホスト上のphpinfoの出力を比較してきたし、この問題の原因となる任意の違いを見ることができなかった

...

Apache mod_rewrite "は問題を解決しません(その設定の目的はURLのindex.phpを取り除くことだからだと思います)。

"検索エンジンフレンドリURL"は、通常、仕事に慣れていないようです - web.configと書き換えルールは必要ありません...どうしたら間違ってしまうのか分かりません。


アップデート - 2009-03-03

私は多分それだけで( "使用のApacheのmod_rewriteから最初のSEOの設定(「検索エンジンフレンドリーなURL」)をオンにする悪い考えだと思いました")(私のローカルマシン上で" Search Engine Friendly URL "だけをオンにしても問題ありませんが)。だから私はいくつかの実験を試しました

おそらく問題はURLの書き換えがホスト上のIIS7で正しく設定されていないと考えられたことです。私はhttp://learn.iis.net/page.aspx/461/creating-rewrite-rules-for-the-url-rewrite-moduleに記載されている(最初の)テストファイルを実行しています。つまり、URLの書き換えが機能しています。

次に、IIS7上のJoomlaで見られるリライトルールをサブディレクトリを考慮して書き直す必要があると考えました。上記のように、SEOの設定はローカルマシンで正常に動作しています。 Joomlaはサブディレクトリにもインストールされており、すべて正常に動作しています。それにもかかわらず、私は(すなわち、条件とアクションにディレクトリ名を付加)

<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> 

から

<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> 

に書き換えルールを変更しようとしました。それは違いはありませんでした。さて、ルールを書き直すのは全く新しいので、何かを犯したかもしれません。

私はそれがリダイレクトルールがないことは疑いの種だと思います。つまり、&を「書き直した」URLを貼り付けると、作成されたURLであることをサーバーに伝える必要はありません。実際のURLにリダイレクトする必要がありますか?しかし、もう一度、これは普通の古い書き換えルールでローカルのボックスでうまく動作しているので、間違ったツリーで吠えているかもしれません。

ありがとうございました!

答えて

2

ホスティング会社が使用していなかったFastCGIはPHPを実行する。 phpinfo()を実行しているときに「Server API = CGI/FastCGI」と表示されていても、fastcgiが使用されていることを保証するためにはNOT ENOUGHです。

CGIまたはISAPIを使用すると何が問題になりますか?彼らは両方ともPHPの変数_SERVER ["REQUEST_URI"]に問題があります。これはjoomla SEOが使うものです。

のFastCGIが使用されるか、またはいないされている場合確実に把握する方法については、私の他の質問を参照してください:私はウェブサイトwww.carooolglobal.comを持ってHow to know for sure if FastCGI is being used to run php scripts

2

このページの最後のステップは、Enabling Search Engine Friendly URLsです。デフォルトのJoomlaによって

は はあなたのウェブサイトのために発生したすべてのリンクURLの パラメータをクエリ文字列を使用しています。この の動作は、 Joomlaの "Search Engine Friendly "と呼ばれるものを有効にすることで変更できます。ただし、この機能の は、 の機能をURL書き換えのWebサーバー で利用できるようにしています。 IIS 6.0にはURL 書き換え機能がないため、 サードパーティのURL のいずれかを使用して、 ISAPI_RewriteまたはIonics ISAPIリライト フィルタなどの書き換え製品を使用できます。 IIS 7.0はURL再書き込み をサポートしています。 Microsoft URLリライト モジュールをIIS 7.0用にインストールすることで有効にできます。次の 手順は、URL書き換え IIS 7.0用モジュールを使用して JoomlaでクリーンURLを有効にする方法について説明しています。
まず、Microsoft URL Rewrite Moduleをダウンロードしてインストールする必要があります。インストールが完了したら、C:\ inetpub \ wwwroot \ Joomlaフォルダにあるweb.configファイルを作成して開きます。次のXMLコードをこのファイルに貼り付けます。

<?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> 

web.configファイルを保存して、Webブラウザを開き、http://localhost/joomla/administrator/でJoomlaの管理コンソールにログオン
。一度サイトに行き、ログオン - >以下のようにグローバル設定メニューの設定のSEOの設定:

  • 検索エンジンフレンドリーなURL - はい
  • 使用Apacheのmod_rewriteを - はい
  • はURLへの接尾辞を追加 - ことではありません
  • 構成の保存[適用]をクリックしてから http://localhost/joomla/を参照してください。Joomlaのページのすべてのリンクにクエリ文字列パラメータのないURLがあることがわかります。これらのリンクをクリックすると、サーバーは正しい応答を返します。

    +0

    答えに感謝します。しかし、私はローカルのマシンとホストされたサイトの両方ですでに同様の指示に従っています。ローカルマシンでは動作していますが、ホストされたサイトでは動作していません...だから、ホストされたサイトでこれを診断する方法についてもう少し詳細が必要です。 – Jimmy

    0

    を、すべての機能がに設定されているすべてのSEOの設定で正常に動作しますNo

    SEO設定のいずれかをYesに設定し、ホームページの検索フォームの左側から検索を実行すると、index.phpの結果が正しく表示されます。ただし、名前のリンクをクリックすると検索結果、ポップアップウィンドウで人のプロフィールを開く必要がありますが、ポップアップウィンドウが表示されます

    このサイト 入力ミスアドレス このページ にはアクセスできませんため、期限切れのリストを持っている期限切れのブックマーク/お気に入りの 検索エンジン:ためのこのページを訪問することができ要求されたリソースが見つかりませんでした。 リクエストの処理中にエラーが発生しました。 次のいずれかのページを試してみてください:

    ホームページ

    それでも問題が解決しない場合は、このサイトのシステム管理者に連絡してください。

    私は、私はこれはまだ覆われていた場合は、不足している事を私は見たが、私は良いんだかわからない無知

    よろしく Kislay

    0

    ています。

    あなたが検索エンジンフレンドリーリンクに問題があるなら、Joomlaのがインストールされているフォルダに移動し、

    はこの404問題を解決する必要があります.htaccessファイルにあなたhtaccess.txtファイルの名前を変更します。

    +0

    '.htaccess'はIIS7では使用されていません – rtpHarry

    関連する問題