2016-09-05 4 views
0

標準的なタグ(php)で使用する一連の正規表現を作成しようとしています。PHP正規表現:標準タグの使用のためのURLの一部を削除する

私のヘッダは動的であり、正規のURLが現在より良いdemostrateするに

<link rel="canonical" href="'. BASEHREF . $_SERVER['REQUEST_URI'].'" /> 

に設定されているものを私はいくつかの例を与えるだろう。(数字はページ数)を達成しようとしてイム。例えば

example.com/cars/1,2,etc canonical url points -> example.com (home page) 
example.com/car/nissan canonical url points -> example.com (home page) 
example.com/new-phones/1,2,3etc canonical url points -> example.com/new-phones/ 

URLは言葉の車、車+数字や単語が含まれているので、基本的にするとき、私はそのページのカノニカルURLはホームページを指すようにしたい、とURLが含まれている場合/新携帯電話/ +その親ディレクトリを指す番号。

これは私がこれまで持っていたコードで、正規のURLからページ番号を削除するだけです。私は正規表現であれば条件しかしイム良くないを使用しなければならないこと

$url = BASEHREF.$_SERVER['REQUEST_URI']; 

$parts = parse_url($url); 
$scheme = $parts['scheme']; 
$host = $parts['host']; 
$path = $parts['path']; 

$items = preg_split('/\//',$path,null,PREG_SPLIT_NO_EMPTY); 

$thepage = $items[0]; 
$pagenumber = $items[1]; 
$canonical_url = ($pagenumber = '') ? $url : $scheme.'://'.$host.'/'.$thepage; 

イム確認してください。 ありがとうございます。

答えて

1

このRegexはcar(s)/numberです。 /cars?/\d+

これはあなたの携帯電話に一致します。 /new-phones/\d+

PHPやリダイレクトのルールでリダイレクトできます(私は個人的に使用します)。

リダイレクトルールを使用してリダイレクトする場合は、サーバーの動作状況を知る必要があります。

あなたはnginxの下で動作するので、外観はthereですが、リダイレクションルールが必要であることに注意してください。使用しているリダイレクトの種類(301など)を確認してください。

+0

私はnginxサーバーを実行します。 – Skeptic

関連する問題