PHPで作られているかは分かりませんが、このサイトteratailなどでもPHPのクエリをURLの末尾に?や&で繋げた表示はありません。
記事ページは https://teratail.com/questions/記事番号? だけになっています。
こういったURLはどのように実現されているのでしょうか?
ネットでの検索はいろいろとしましたが、適切な検索ワードが思いつかず。
PHP SEO URL 動的ページ クエリ GET WEBサイト GETなし クエリなし 省略
上記のようなワードしか思いつかず困っています。
英語のみの検索で英語サイトもいくらか見ていますが、日本語と同じで、主にGETの説明サイトばかりで…。
###追記
回答いただいた内容と、追加で調べた内容で具体的なやり方を記載します。
間違い・補足・他のやり方などあれば教えてもらえると助かります。
◯基本URL XXX.com/news/index.php?id=123
◯目標URL XXX.com/news/123
記事などのIDのみでアクセスしたい。
上記のようなURLのPHPを使った場合の一般的なやり方を具体的に知りたい。
mod_rewrite.cで内部的に書き換える方法をやりました。
htaccess
1<IfModule mod_rewrite.c> 2RewriteEngine on 3RewriteBase /news 4RewriteCond %{REQUEST_FILENAME} !-d 5RewriteCond %{REQUEST_FILENAME} !-f 6RewriteRule ^([0-9a-zA-Z]+)/?$ index.php?id=$1 [L] 7</IfModule>
この.htaccessをnewsディレクトリに配置するだけで記事IDのみでアクセスできるようになる。
RewriteRuleの所で記事IDである123を取得して、通常のindex.phpを使ったURLに内部的に書き換えているだけ。表示されるURLはアクセス時のまま。
各書式などは mod_rewriteなどで検索すると分かりやすいサイトがありました。
index.php内で$_SERVER['REQUEST_URI']を使っている場合、ここにはアクセス時のIDのみのURLが入っているのが注意点。
今回の内容に必要だった検索ワード
PHP $_SERVER['PATH_INFO'] mod_rewrite.c RewriteRule 静的URL URL書き換え
同一の質問
https://teratail.com/questions/221666
https://teratail.com/questions/217874
https://teratail.com/questions/180651
###追記
複数クエリの場合は次の方法でいけると思いますが、間違っている場合は指摘が欲しいです。
XXX.com/news/animal/cat/123 ジャンル動物の、猫の123番の記事
XXX.com/news/index.php?p=animal/cat/123 上記をこのように.htaccessで書き換えするだけ
追記1の ([0-9a-zA-Z]+) ここをスラッシュも含むように修正するだけで上記の形に
あとは、index.phpで受け取った p をスラッシュでスプリットして扱うだけ
回答1件
あなたの回答
tips
プレビュー