2017-01-25 3 views
-1

PHPを使用してURL短縮型Webアプリケーションを構築しています。より短いURLを生成することができました。しかし、短縮URLにアクセスしたユーザーをリダイレクトすることはできません。PHPを使用してURLスラッグを抽出します。 URL短縮ツールを構築する

ユーザーがhttps://example.com/aBc1Xと入力した場合は、aBc1Xをキャプチャしたいと考えています。その後、元のURLを見つけてリダイレクトするようにデータベースに問い合わせます。

私の質問は、上記のURLからaBc1Xを取り出すにはどうすればよいですか?

P.私はApacheかNginxを使います。

+0

[YOURLS](https://github.com/YOURLS/YOURLS)をおすすめします。時間を節約しましょう。 – wogsland

+0

@wogsland私はこれを大学のプロジェクトとして構築しています。 –

答えて

1

あなたには2つのことがあります。 まず、すべてのトラフィックをルーターファイルとなる1つのファイルにリダイレクトする必要があります。 .htaccessファイルにいくつかのルールを置くことで、これを行うことができます。私は(これはWordPressから来る)で開始することが、いくつかの一般的なルールを配置します:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^redirect\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /redirect.php [L] 
</IfModule> 

は、ファイルまたはディレクトリされていないためにどこでもURLのポイントは、ファイルredirect.phpを実行することを言います。その設定を必要に応じて調整することができます。

次に、redirect.phpで、$_SERVER['REQUEST_URI']を見てURLを取得できます。 URLの場合http://example.com/any-url-i-wantの場合は $_SERVER['REQUEST_URI'] == '/any-url-i-wantとなります。

ここで必要なのは、データベース内のURLを見つけてリダイレクトすることだけです。 この時点で、parse_url、正規表現、または単純な文字列の切り捨てを使用して、文字列操作を処理できると思います。

+0

あなたの答えをありがとう。 Ngnixでこれを行う方法はありますか? –

+0

私はnginxで多くの経験がありません。しかし、私はあなたが変換するか、またはnginxの同等のルールを書くことができるはずだと思います。この短い記事はhttp:// nginxlibraryに役立ちます。com/wordpress-permalinks / – Grawer

0

使用します。

$_SERVER['REQUEST_URI']; 

これはあなたが探しているものを返します。

あなたは、必要に応じてその後$pathaBc1Xなります

$url = "https://example.com/aBc1X"; 
$path = ltrim(parse_url($url, PHP_URL_PATH), '/'); 

URLを解析するにはdocumentation here

+0

私は、OPはユーザーがページ上ではなくフォームへの入力としてURLを入力していることを意味します。 – wogsland

+0

これは私が読んでいる方法ではありません - _ "短いURLを生成することはできますが、短縮URLにアクセスするとユーザーをリダイレクトすることはできません" _ – Tom

+0

私の答えは、 URLは1つのPHPスクリプトで処理されます。 – Tom

0

を見ることができます。 ?に続くクエリは、このソリューションでは省略されます。詳細はdocumentation of the parse_url functionをご覧ください。

+0

$ pathには、最初に "/"が含まれているので、これを切り捨てる必要があります。 –

+0

@ BA_Webimaxありがとう - 固定! – wogsland

関連する問題