3

現在、.htaccess ファイルで次のルールを使用しています。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

これは、(URL に拡張子がなくても)正常に機能することを保証するために/myfile.phpうまく機能します。myfileまた、問題なくクエリ文字列を処理するためmyfile?var=foo、機能します。

問題は、これらが 2 つの別個のファイルとして Google アナリティクスに登録されていることです。つまりmyfile.php、私のサイトで 3 番目に人気のあるページで X 回の訪問がmyfileあったとしても、私のサイトで 5 番目に人気があり Y 回の訪問があったページかもしれません。

「どちらか一方を受け入れる」タイプのルールではなく、ハードリダイレクトを行うにはどうすればよいですか?

4

4 に答える 4

2

.phpファイルのリクエストをリダイレクトするには、次のルールを試してください。

RewriteCond %{THE_REQUEST} ^GET\ /(([^/?]*/)*[^/?]+)\.php
RewriteRule ^.+\.php$ /%1 [L,R=301]
于 2009-03-25T12:21:05.847 に答える
2

これを行うには、最後の RewriteRule を変更していただけますか?

RewriteRule ^(.*)$ $1.php [L,R=301]

これにより、「myfile」が「myfile.php」にリダイレクトされます。

また、ルールを使用して、Google アナリティクス内でこれを調整することもできます。それはおそらく理想的な解決策ではありませんが。

ETA : myfile.php を myfile にリダイレクトする場合は、代わりに最後のルールでこれを試してください。

RewriteRule ^(.+)\.php$ $1 [L,R=301]
于 2009-03-25T15:20:57.803 に答える
0

数時間かかりました...しかし、ついに答えを見つけたと思います。

// The Original
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

// Add This
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(([^/]+/)*[^.]+)\.php /$1 [R=301,L]

ここにあります: http://www.webmasterworld.com/apache/3961636.htm

于 2012-04-07T04:18:31.723 に答える