[解決済み] PHPによるURLリライト
2022-05-08 05:06:52
質問
以下のようなURLがあります。
url.com/picture.php?id=51
そのURLをどのように変換すればいいのでしょうか。
picture.php/Some-text-goes-here/51
WordPressも同じだと思います。
PHPでフレンドリーなURLを作るにはどうしたらいいですか?
どのように解決するのですか?
基本的に2つの方法があります。
mod_rewrite を使った .htaccess ルート
というファイルを追加します。
.htaccess
をルートフォルダにコピーし、以下のような内容を追加してください。
RewriteEngine on
RewriteRule ^/?Some-text-goes-here/([0-9]+)$ /picture.php?id=$1
これは Apache にこのフォルダに対して mod_rewrite を有効にするよう指示し、 正規表現にマッチする URL を尋ねられたらそれをリライトします。 内部的に を、エンドユーザーには見えないように、あなたが望むものに変換します。簡単ですが、柔軟性に欠けるので、もっと強力なものが必要な場合は、以下のようにします。
PHPルート
代わりに以下を.htaccessに記述してください。(先頭のスラッシュに注意してください)
FallbackResource /index.php
を実行するように指示します。
index.php
は、通常サイト内で見つけることができないすべてのファイルに対して使用されます。そこで、たとえば次のようなことができます。
$path = ltrim($_SERVER['REQUEST_URI'], '/'); // Trim leading slash(es)
$elements = explode('/', $path); // Split path on slashes
if(empty($elements[0])) { // No path elements means home
ShowHomepage();
} else switch(array_shift($elements)) // Pop off first item and switch
{
case 'Some-text-goes-here':
ShowPicture($elements); // passes rest of parameters to internal function
break;
case 'more':
...
default:
header('HTTP/1.1 404 Not Found');
Show404Error();
}
これは、URLの解析、設定やデータベースに依存するURLなどにおいて、はるかに柔軟性があるため、大きなサイトやCMSシステムではこの方法がとられています。散発的な使用であれば、ハードコードされたリライトルールを
.htaccess
で十分なのですが。
関連
-
[解決済み】Wordpressの子テーマのstyle.cssが効かない。
-
[解決済み] ブラウザによって異なるURLの最大長とは?
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] URI、URL、URNの違いは何ですか?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み] ページを再読み込みせずにURLを変更するにはどうすればよいですか?
-
[解決済み] JavaScriptでURLをエンコードする?
-
[解決済み] jQueryで現在のURLを取得する?
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Notice: 非オブジェクトのプロパティを取得しようとしているエラー
-
[解決済み】XAMPPのphpMyAdminで「設定にあるcontroluserの接続に失敗しました。
-
[解決済み】Apache + PHPで「ヘッダの前にスクリプトの出力が終了する」件
-
[解決済み] $wpdb->update または $wpdb->insert を実行すると、引用符の前にスラッシュが追加される
-
[解決済み】mysqli_select_db()は、パラメータ1がmysqliであることを期待し、文字列が与えられる。
-
[解決済み】file_get_contents( )が動作しない。
-
phpのAllowed memory size of 134217728 bytes枯渇問題の解決法
-
[解決済み】Wordpressの子テーマのstyle.cssが効かない。
-
[解決済み] mysqli_fetch_assoc() は、パラメータ 1 が mysqli_result であることを期待し、boolean が与えられる [重複] 。
-
[解決済み] オートロードとは何ですか; spl_autoload、__autoload、spl_autoload_register はどのように使うのですか?