web-dev-qa-db-ja.com

アンダースコアを含むURLを処理する方法

アンダースコアよりもハイフンが好まれることを知っており、301リダイレクトを行うことができます。しかし、それらを変更するのはカオスの価値はないと言う人もいますし、私もほぼ同意します。 https://moz.com/community/q/hyphens-vs-underscores

したがって、私のURLは次のようになります。

example.com/post/this-is-post-title_tokenid/

新しい投稿の場合:

example.com/post/this-is-post-title-tokenid/

私は次の場合に404​​を返す必要があると仮定しています:

  1. 下線のない新しい投稿
  2. ハイフン付きの古い投稿

これは正しいアプローチですか?

それとも、何もせずにそのままにしておくべきでしょうか?

あなたは何をお勧めします?

1
mj23

アンダースコアがあれば、それは大きな問題ではありません。GoogleとBingは最初にリリースされてから順調に進んでいます。政治的に正確にしたい場合は、.htaccessを次のように編集して、アンダースコアをハイフンに書き換えることができます。

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteRule !\.(html|php)$ - [S=6]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5-$6-$7 [E=underscores:Yes]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5-$6 [E=underscores:Yes]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5 [E=underscores:Yes]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4 [E=underscores:Yes]
RewriteRule ^([^_]*)_([^_]*)_(.*)$ $1-$2-$3 [E=underscores:Yes]
RewriteRule ^([^_]*)_(.*)$ $1-$2 [E=underscores:Yes]

RewriteCond %{ENV:underscores} ^Yes$
RewriteRule (.*) https://www.example.com/$1 [R=301,L]

PHPを使用する場合は、$input_uri = $_GET['rewrite_uri'];および$output_uri = str_replace("_", "-", $input_uri);などを使用して、置換を使用してURLを書き換えることができます。

2
Simon Hayter

当時、URLにはダッシュのみを使用するのがベストプラクティスでした。アンダースコアは、多くの場合、イメージ/ファイル名で使用されました(OSが原因)。しかし、現在、ボットはそれほどきびきびしていません。

何もせず、そのままにしておきます。トークンは関連するインデックスフォーカルではないため、それ以前の文字はとにかく無関係です。単にアンダースコアがあるため、アーカイブの内容を変更する価値はありません。新しいものについては、純粋にURiの外観の問題です。現代のSEOインデクサーは、1つの文字がアンダースコア/ダッシュであるかどうかはあまり気にしません。単語を見るだけです。個人的には、アンダースコアを維持します。アンダースコアは、投稿とトークンの間の仕切りのように機能するためです。

0
dhaupin