1

誰かが助けてくれることを願っています。htaccessについて十分な情報が得られなかったことをお詫びします。さまざまなオプションを検索して数時間を費やしましたが、成功しませんでした。

基本的な URL が domain.com/index.php/page-name の形式である CMS を使用しています

index.php を失い、domain.com/page-name のみを保持する管理者設定があり、以下の htaccess エントリが作成されます。

<IfModule mod_rewrite.c>
<IfModule mod_env.c>
SetEnv gp_rewrite gJjsF6q
</IfModule>
RewriteEngine On
RewriteBase "/"
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
<IfModule mod_cache.c>
RewriteRule /?(.*) "/index.php/$1" [L]
</IfModule>
<IfModule !mod_cache.c>
RewriteRule . "/index.php" [L]
</IfModule>
</IfModule>

コアの正規化を処理するために、www 以外の URL のリクエストを www にリダイレクトしようとしましたが、これまでのところ失敗しています。ほとんどすべてで、500 などのサーバー エラーが発生します。ドキュメントがここに移動しました - さらに、ErrorDocument を使用して要求を処理しようとしたときに、403 Forbidden エラーが発生しました。

最後に www/non www 書き換えを追加することにより (以下のように)、少なくともドメインは機能しますが、リダイレクトはルートに対してのみ機能します。1 つおきのページは /index.php/ の書き換えを無視し、再び domain.com/index.php/page-name の形式でページを返します。

<IfModule mod_rewrite.c>
<IfModule mod_env.c>
SetEnv gp_rewrite gJjsF6q
</IfModule>
RewriteEngine On
RewriteBase "/"
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
<IfModule mod_cache.c>
RewriteRule /?(.*) "/index.php/$1" [L]
</IfModule>
<IfModule !mod_cache.c>
RewriteRule . "/index.php" [L]
</IfModule>
<Ifmodule mod_rewrite.c>
rewritecond %{http_host} ^domain.com [nc]
rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc]
</Ifmodule>
</IfModule>

本質的にリダイレクトなしよりも悪い。コア CMS のニーズをどのように維持し、www/non www を解決するかについて誰か提案があれば、大歓迎です。

4

1 に答える 1

1

リダイレクト ルールを残りのルールの上Lに置き、フラグを含める必要があります。

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{http_host} ^domain.com [NC]
    RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301,NC]

    <IfModule mod_env.c>
        SetEnv gp_rewrite gJjsF6q
    </IfModule>

    RewriteBase "/"
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    <IfModule mod_cache.c>
        RewriteRule /?(.*) "/index.php/$1" [L]
    </IfModule>
    <IfModule !mod_cache.c>
        RewriteRule . "/index.php" [L]
    </IfModule>
</IfModule>
于 2012-09-17T22:41:29.327 に答える