1

mod_rewriteを使用してSEOURLを作成しています。基本的に、これは次のように機能します。すべてのリクエストは.htaccessによってキャッチされ、phpスクリプト(たとえば、transform.php)にリダイレクトされます。transform.phpはSEOURLを解析し、それを通常のURLに変換してから、index.phpを含め、アプリケーション(index.php)の出力をキャッチし、RegExを使用してすべての通常のURLをSEOURLに変換します。したがって、重要なステップは、すべてのリクエストがtransform.phpを通過するようにすることです。私の.htaccessはかなり長いですが、次の行に制限することができました。

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine on

    RewriteRule ^index\.php?(.*)$ ./transform.php?p=$1&%{QUERY_STRING} [L]

</IfModule>

問題は最初の(ルート)URLで発生します:http://mysite.com/http://mysite.com/と入力し、サイトがローカルcompにある場合、すべてが正常に機能します。http://mysite.com/は.htaccessによってキャッチされ、さらに処理するためにtransform.phpに送信されます。ただし、別のサーバーでは、この行は機能しません(たとえば、http://mysite-other-server.com/の場合)。この.htaccess行は単にリクエストをキャッチしません。ただし、 http://mysite-other-server.com/index.phpではすべて正常に機能します。

さらに、私はこの2番目のサーバーにいくつかのサイトを持っており、それらのいくつかは機能しますが、機能しないものもあります。一部のURLは最初にhttp://mysite-other-server.com/index.phpに解決され、次に.htaccessによって処理されますが、他のURLは解決されず、.htaccessはhttp://を処理します。 mysite-other-server.com/

私は非常に混乱していて、運がなくてグーグルを試しました。どんな助けでも大歓迎です。

4

1 に答える 1

2

Apacheは.htaccesファイルを受け入れないように構成されていると思います。

AllowOverride設定を使用してhttpd構成から有効にする必要があります。

http://httpd.apache.org/docs/2.0/mod/core.html#allowoverride

もう1つの可能性は、本番サーバーがmod_rewriteをロードしていないことです。そのために、LoadModuleディレクティブを確認してください。

于 2010-02-08T19:45:00.573 に答える