2017-12-07 26 views
1

こんにちは。私は自分の "URL Shortener"をコーディングし始めました。基本的な考え方はexample.com/12345を使用して別のURLにリダイレクトすることです。この "マッチング"は、.htaccessを使用して、(私たちにとって今は関係ない)ものをスクリプトに向けてリダイレクトすることによって行われます。302 .htaccess RedirectMatchの後に元のURLを取得することは可能ですか?

私の.htaccessファイルは、現在、次のようになります。

RedirectMatch 302 ^/\w{5}$ /redir.php 

リダイレクトが正確に5の任意の文字列にマッチすると拡大しURLへの実際のリダイレクションが行わ私のPHPスクリプトに向けて送信します。唯一の問題は、元のURL、一致するものを変数にする正しい方法を見つけることができなかったことです。この問題不足している設定から発信することができますので、もし全部が、最低限の知識で私が設定したVPS上で起こる追記として

($ _SERVER [「HTTP_REFERER」]は動作しません)、そして期待私の設定は100%正しいものではなく、標準によるものです。

EDIT:RedirectMatchからRewriteRuleに変更されても、動作しません。これはPARAM redirをクエリ文字列として5文字の文字列を送信します

RewriteRule ^(\w{5})$ /redir.php?redir=$1 [R,L] 

:あなたは、次のルールを使用することができます

RewriteRule ^\w{5}$ /redir.php [R,L] 
+0

は、代わりにbase62のようなものの代わりに、int型を使用して、データベースIDのような実用的なものにそれをデコードします。このライブラリはすべてそれを行います。 http://hashids.org/ –

+0

さらに、10000〜99999のエントロピーはあまりありません。数字はトラバースするのが簡単です。 –

+0

ああ、質問に答えるには、 '$ _SERVER ['REQUEST_URI']'を使用してください:/ –

答えて

1

$_GET['redir'] 

編集:あなたはとしてredir.phpでアクセスできるそれとも@LawrenceCheroneとしてあなたがredir.phpで$_SERVER['REQUEST_URI']を使用することができます示唆しています。しかし、あなたが代わりに.htaccessNCフラグを使用する必要があり、そのために、同様:

RewriteRule ^(\w{5})$ /redir.php [NC,L] 
+1

これはうまくいくようです。私は現在、スクリプト内でリダイレクトを行っていないので、ページは/redir.php?redir=stuffに残っているので、変数として使用することができます。ヘッダリダイレクトを使用して表示するとredir.phpはただちにリダイレクトします。私たちに見てみましょう... また、入力していただきありがとうございます EDIT:動作するようです! –

+0

あるいは、htaccessをそのまま残し、redir.phpファイルで '$ _SERVER ['REQUEST_URI']'を使ってください。ほとんどのフレームワークと同様です。 –

+0

@LawrenceCheroneそれは何らかの理由で動作しませんでした。まだわからない –

関連する問題