web-dev-qa-db-ja.com

「c」または「g」の後に数字が続くURLに対して「410 Gone」応答を送信する

Htaccessで410コードをすべてのリンクに送信できますが、一部のリンクに送信できないものはありますか?

例:

このURLを410にしたいと思います(リストは約40kリンクです)

www.example.com/c1
www.example.com/c2
www.example.com/c3
www.example.com/c4
www.example.com/g1
www.example.com/g2
www.example.com/g3
www.example.com/g4
and so one....

しかし、このリンクはcまたはgで始まる410であってはなりません。

好む:

www.example.com/categories/
www.example.com/concreate/
www.example.com/colombs/

現在、私は.htaccessファイルでこのコードを使用していますが、上記のリンクにも410を指定しています。

RewriteEngine On
RewriteCond %{QUERY_STRING} c
RewriteRule .* - [G,L]
ErrorDocument 410 default

どんな助けでも大歓迎です。

3
Sahil Moldharia
RewriteCond %{QUERY_STRING} c

ここでQUERY_STRINGを参照している理由がわかりませんか? URLにクエリ文字列が含まれていないようですか?

ブロックするURLは、cまたはgで始まり、その後に数字が続くように見えます(1桁以上と仮定します)。その場合は、次のようなものを試してください。

RewriteEngine On
RewriteRule ^[cg]\d+$ - [G]

LにはGフラグは必要ありません。

4
MrWhite

user82217はmod_rewriteを使用して優れたソリューションを提供しました。 mod_alias を使用して実行することもできます。

RedirectMatch gone "/[cg]\d+$"
1