これについて少し助けが必要です。
クエリ文字列を収集し、データベースと照合して一致をテストし、ユーザーをサイトの別のセクションにリダイレクトする php ページを作成中です。
現在の動作は次のとおりです(htaccess / mod_rewriteなし):
- ユーザーの訪問: domain.com/redirect/index.php?slug=Test_1
- PHP ページは、データベースで「Test_1」をサニタイズして検索し、ユーザーをリダイレクトする宛先 URL を取得します。(例: domain.com/New_Test_1)
- PHP ページは、それに応じて 301 リダイレクトします。
この部分は正常に動作しています。ただし、制御できない変数があるため、次のように元の URL を (htaccess/mod_rewrite を使用して) 解釈する必要があります。
- domain.com/redirect/index.php/Test_1
これはまだ次と同じように機能します:
- domain.com/redirect/index.php?slug=Test_1
(注: はい、index.php は URL にとどまる必要があります。)
私はこれをhtaccessで次のように動作させていますが、それがより良い可能性があることを知っています:
RewriteEngine On
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)$ %{DOCUMENT_ROOT}/redirect/index.php?slug=$2 [PT,L,QSA]
助けが必要な部分...
一部の古い URL スラッグには、次のようにスラッシュが含まれていました。
- domain.com/redirect/index.php?slug=How_to_Code/Program
htaccess がなくても、上記は引き続き機能しますが、pretty(ier) url で失敗します。
- domain.com/redirect/index.php/How_to_Code/Program
私の現在の htaccess では、「How_to_Code」部分のみをキャプチャし、それ以降はすべて無視します。
私の質問はこれです: htaccess を再構築して、スラッシュを含め、domain.com/redirect/index.php/(.*)$ の後のすべてを取得するにはどうすればよいですか?
編集: この .htaccess は /redirect ディレクトリ内にあります