1

問題が発生しました.htaccess

私は Cakephp フレームワーク (2.0) を使用し、次のコードを使用して a を a.htaccesにリダイレクトします:non-wwwwww

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

問題は、誰かがリンクhttp://mysite.nl/controller/view/E1をクリックすると、 http://www.mysite ではなくhttp://www.mysite.nl/index.php
に移動することです。 nl/controller/view/E1 (wwwあり)

そして、これは書き換えがmysite.nlで www.mysite.nlに機能している間です。

誰かが私が間違っていることを教えてもらえますか? さまざまな種類の書き換えルールを検索しましたが、運がありません。

コメント後の完全な .htaccess ファイル:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]    
</IfModule>
4

1 に答える 1

1

.htaccess では、ルールの順序が非常に重要です。一般に、301 は、すべてのリクエストをキャッチしてリクエスト URI を変更するフロント コントローラー ルールの前に表示する必要があります。

このコードを試してください:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    # add www rule
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

    # cakephp front controller rule
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]    
</IfModule>
于 2013-11-05T17:26:19.013 に答える