PHPでオレオレMVCをやる時のリライト処理メモ

   · ☕ 1 min read
🏷️
  • #PHP
  • MVCモデルに置いて表示の出し分けは、アクセスのあったURLの文字列を参照する。
    URLに処理ファイルが配置されているわけではなく、パスはあくまで文字列の取得元である。

    public/controller/method/var1/var2/var3
    

    上記にアクセスがあった場合、Apacheは該当のディレクトリを探しに行ってしまう。
    もちろんそこにファイルはないため、404Errorとなる。
    それを防ぐために、.htaccessを使用しファイル探索を行わさせず(Rewrite処理)、
    URL文字列を取得するに留まらせる。

    mod_rewrite - Apache HTTP Server Version 2.4

    Options -MultiViews
    Options -Indexes
    
    RewriteEngine On
    RewriteBase /mvc_php/public
     # ホストに合わせて調整
    
    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l
    
    RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
    

    .htaccessによってクエリ化されたパスの値を受け取って、サニタイズを行う。

    1
    2
    3
    
    if(isset($_GET['url']) {
        return explode('/', filter_var(rtrim($_GET['url'], '/')), FILTER_SANITIZE_URL)
    }
    
    Share on

    whasse
    WRITTEN BY
    whasse
    Web Developer