0

URL を から に書き換えwebsite.com?id=1ましwebsite.com/1たが、ページにアクセスしようとすると 404 エラーが発生し、解決策が思いつきません。現在、リンク短縮サービスを開発中です。これは、ユーザーが短縮リンクにアクセスできるようにするために必要です。

これは私の現在の .htaccessfile です

RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /(index\.php)?\?id=([0-9]+)([^\ ]*)
RewriteRule ^ /%3?%4 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9]+)/?$ /?id=$1 [L,QSA] 

これが .htaccess ファイルに関係しているのか、それとも PHP コードに何か他のものを追加する必要があるのか​​ どうかわかりません。

誰かが何らかのアイデアを持っているでしょうか?ありがとう。

4

2 に答える 2

1

index.php2 番目のルールで明示的に書き直す必要があります。書き換えルールが処理されるまでに、DirectoryIndexディレクティブはすでに処理されています (またはまったく処理されない場合があります。これは、仮想ホストの構成と、DirectoryIndexディレクティブが宣言されたスコープに少し依存します)。

これの最終結果は、リクエストを処理したいスクリプトにリクエストを明示的に書き直す必要があるということです。単にディレクトリのルートに書き直すことはできません。2 番目の書き換えルールを次のように変更してみてください。

RewriteRule ^([0-9]+)/?$ /index.php?id=$1 [L,QSA]

個人的には、他の誰かがこの問題へのアプローチを使用しているのを見るのは興味深いことです%{THE_REQUEST}。これは私自身が最近思いついたアイデアですが、おそらく私が最初にそうしたわけではありません. 将来の訪問者のために、この要件が発生する理由とその背後にある考え方を説明する関連記事を次に示します。

于 2013-04-19T11:25:29.470 に答える