0

Web サイトに SEO フレンドリーな URL を設定しようとしていますが、うまく機能しないようです。私のhtaccessのコードは次のとおりです。

Options +FollowSymLinks
RewriteEngine On

deny from all
allow from 46.763.65.235

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

RewriteRule ^(link1|link2|link3|link4)$ http://mywebsite.com/$1/ [R=301]

RewriteRule ^(link1|link2|link3|link4)/(.*)$ http://mywebsite.com/m_$1.php/$2 [L]

基本的に、http://mywebsite.com/link1にアクセスすると、 http://mywebsite.com/m_link1.phpのコンテンツが表示されます。

ただし、現在起こっていることは、http://mywebsite.com/link1 にアクセスすると、http://mywebsite.com/m_link1.phpリダイレクトされるだけです。

何を変更または追加する必要があるかを誰かが示すことができますか?

4

1 に答える 1

1

この質問を参照してください。リダイレクトの原因となっている R フラグを使用しています。そのフラグがないと、内部リダイレクトが行われます (ブラウザーに別の要求をさせることはありません)。

更新: 「mywebsite.com」が URL のプレースホルダーであると仮定して、問題は別の URL へのリダイレクトを実行しようとしたことだと思います。その場合、実際に [L] フラグが必要なため、一致するルールが [L]last のルールとして機能します。これは私にとってはうまくいきました:

(注: # これらの行は何もしないようにコメントアウトします)

Options +FollowSymLinks
RewriteEngine On

#deny from all
#allow from 46.763.65.235

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

#RewriteRule ^(link1|link2|link3|link4)$ http://mywebsite.com/$1/ [R=301]

#one rule for /link1 or /link2 etc
RewriteRule ^(link1|link2|link3|link4)$ m_$1.php [L]
#another rule for /link1/foo or /link2/something-else
RewriteRule ^(link1|link2|link3|link4)/(.*)$ m_$1.php/$2 [L]
于 2013-01-06T03:55:13.063 に答える