3

私は数日間 HTAccess に取り組んできましたが、行き止まりになりました。

ファイルを拡張子なしに書き換えてリダイレクトしましたが、今度は SEO フレンドリーになるように URL を書き換える必要があります。

以前の URL は次のとおりでした:http://www.example.com/member.php?playername=encodedName
拡張機能を削除しました:http://www.example.com/member?playername=encodedName
まったく取得できません:http://www.example.com/member/encodedName

これが私がこれまでに得たものです:

SEO フレンドリー URL にリダイレクトしようとしているコード。動作しません。

 RewriteRule ^member/([^/]*)$ /member.php?playername=$1 [L] 
 RewriteRule ^squad/([^/]*)$ /squad.php?squadname=$1 [L] 
 RewriteRule ^article/([^/]*)$ /article.php?articlename=$1 [L]

ディレクトリでない場合は、末尾のスラッシュを削除します。動作します。

 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)/$ /$1 [R=301,L]

拡張子のない php URL の .php ファイルを解決します。動作します。

 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME}\.php -f
 RewriteRule ^(.*)$ $1.php [L]

外部の .php リクエストを拡張子のない URL にリダイレクトします。動作します。

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

私が間違っていることについて誰かが考えを持っていますか? おそらく、まだ遭遇したことのない非常に初心者の問題です。

4

1 に答える 1

1

SEO フレンドリー URL にリダイレクトしようとしているコード」の部分は問題ないようです。また、拡張子を削除するために php ファイルに直接行われたリクエストをリダイレクトしている間は、書き換えている 3 つの SEO フレンドリーな URL について特に何もしていません。

にアクセスしたときにhttp://www.example.com/member/encodedNameでコンテンツが提供されていない場合http://www.example.com/member.php?playername=encodedName、これはマルチビューの問題のようです。サーバー/仮想ホスト構成でマルチビューをオフにするか、これを htaccess ファイルの先頭に追加する必要があります (または適切な既存のOptionsステートメントで):

Options -Multiviews

SEO フレンドリーな URLのリダイレクトを行うには、「Redirect external .php requests to extensionless url.」ルールの前にこれを追加します。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /member\.php\?playername=([^&\ ]+)([^\ ]*)
RewriteRule ^ /member/%1?%2 [L,R=301]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /squad\.php\?squadname=([^&\ ]+)([^\ ]*)
RewriteRule ^ /squad/%1?%2 [L,R=301]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /artcile\.php\?articlename=([^&\ ]+)([^\ ]*)
RewriteRule ^ /article/%1?%2 [L,R=301]
于 2012-11-13T23:29:10.070 に答える