ホームページ >バックエンド開発 >PHPチュートリアル >PHP で擬似静的を実現するには 4 つの手順があると思いますか?
PHP で擬似静的を実現するには 4 つの方法がありますが、思い当たりますか?
擬似静的実装ソリューションについて言えば、「簡単です。Apache の書き換えルールを設定するだけです 」
しかし、この状況は見つかりませんでした。最近、たくさんの新機能が毎日追加されていますが、まだ最初の 2 日間ですが、2 日以降は、運用と保守のクラスメートが協力してくれるようになりました。日が経つと、運営や保守のクラスメートに叱られます。どうして一度に全部やって、あなたはあまりにも鈍くて愚かなので、毎日私を困らせませんか?しかし、これからオンラインに接続しようとしているので、運用および保守のクラスメートに熱心に質問し、プログラマーの世界で最も恥知らずな言葉を言わなければなりません。「これが最後の変更です」。もう一度変えなければなりません、ため息、あなたの人格は完全に台無しです。 。 。
このようなお悩みをお持ちの方は、以下の記事を読んでいただき、今後二度と運用保守を依頼することがなくなり、安心してご利用いただけます。 。 。
それでは、PHP で擬似静的を実装する方法は何通りあるでしょうか?個人的な意見と統計では、
の 4 つの方法があります。 1. Apache の URL 書き換えルールを使用します。これはすべて Apache で設定します。学生がここで作成したものです。簡単な設定を列挙するだけです。
<span style="color: #000000;">RewriteEngine OnRewriteRule </span>^/test.html index.php?controller=index&action=test [L]2. PHP の pathinfo を使用します。「www.xxx.com」を再生する Web サイトをいくつか見たことがありますか? /index.php/c/index/a/test/id/100' このように、もちろんこれをサポートするには、'php.ini' でパラメータを設定する必要があります 'cgi .fix_pathinfo' が設定されています1に。例として「www.xxx.com/index.php/c/index/a/test/id/100」を取り上げます
<span style="color: #0000ff;">echo</span> <span style="color: #800080;">$_SERVER</span>['PATH_INFO']; <span style="color: #008000;">//</span><span style="color: #008000;">输出'/c/index/a/test/id/100'</span>ここまでで、理解できるはずです。その後、解析します。この段落に実際のアドレスを割り当てます 3. 404 メカニズムを使用する 一般に、疑似静的ページは実際には存在しないページであるため、Apache 404 構成を使用できますが、問題は、'post' タイプのリクエストが放棄され、'$_POST'、 を取得できなくなることですが、ここでの 404 ページが '404page であると仮定すると、'$_GET' は引き続き取得できることです。 .php'、apache 構成は次のとおりです:
ErrorDocument 404 /404page.php次に、次のコードを '404page.php' に埋め込みます
<span style="color: #008080;">header</span>("HTTP/1.1 200 OK"); <span style="color: #008000;">//</span><span style="color: #008000;">这里一定要有,不然状态就是404</span><span style="color: #800080;">$reqUrl</span> = <span style="color: #800080;">$_SERVER</span>['REQUEST_URI']; <span style="color: #008000;">//</span><span style="color: #008000;"> 请求地址</span><span style="color: #008000;">/*</span><span style="color: #008000;">** 从URL中解析参数</span><span style="color: #008000;">*/</span><span style="color: #0000ff;">function</span> parseUrlParams(<span style="color: #800080;">$queryUrl</span><span style="color: #000000;">){ </span><span style="color: #800080;">$arr</span> = <span style="color: #008080;">explode</span>('?', <span style="color: #800080;">$queryUrl</span><span style="color: #000000;">); </span><span style="color: #008080;">parse_str</span>(<span style="color: #800080;">$arr</span>[1], <span style="color: #800080;">$param</span><span style="color: #000000;">); </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">$param</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">$param</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">$key</span> => <span style="color: #800080;">$value</span><span style="color: #000000;">) { </span><span style="color: #800080;">$_GET</span>[<span style="color: #800080;">$key</span>] = <span style="color: #800080;">$value</span><span style="color: #000000;">; } }}parseUrlParams(</span><span style="color: #800080;">$reqUrl</span>); <span style="color: #008000;">//</span><span style="color: #008000;"> url解析参数//然后你就可以使用 $reqUrl 根据自己的规则匹配不同的实际请求地址</span><span style="color: #0000ff;">if</span>(<span style="color: #008080;">preg_match</span>('#^/test.html#is', <span style="color: #800080;">$reqUrl</span>, <span style="color: #800080;">$matches</span><span style="color: #000000;">)){ </span><span style="color: #0000ff;">include</span>('index.php'<span style="color: #000000;">); </span><span style="color: #0000ff;">die</span><span style="color: #000000;">();}</span>4. 方法 3 の改良版。方法 3 は、Apache の内部機構におけるリダイレクトに相当し、post(get) で渡されるパラメータが取得できなくなります。実際に上記を解析してみると、該当するファイルが見つからない場合は、ファイルを指定してOKであれば、この時点でPOSTなどを行う必要はありません。失われることはありません。 Apache の設定は次のとおりです。
<span style="color: #000000;">RewriteEngine OnRewriteCond </span>%{REQUEST_FILENAME} !-<span style="color: #000000;">fRewriteCond </span>%{REQUEST_FILENAME} !-<span style="color: #000000;">dRewriteRule </span>. index.php上記の設定の一般的な意味は、要求されたファイルまたはディレクトリが見つからない場合、ルートで 'index.php' を使用することです。代わりに、'index.php' 内の関連パラメータを取得し、実際のリクエスト アドレスに解析することができます。
<span style="color: #008000;">/*</span><span style="color: #008000;">** 获取当前请求的URI地址[email protected] void[email protected] painsOnline[email protected] string URI</span><span style="color: #008000;">*/</span><span style="color: #0000ff;">function</span><span style="color: #000000;"> getReqUri(){ </span><span style="color: #0000ff;">return</span> <span style="color: #008080;">trim</span>(<span style="color: #800080;">$_SERVER</span>["REQUEST_URI"<span style="color: #000000;">]);}</span><span style="color: #800080;">$reqUri</span> =<span style="color: #000000;"> getReqUri();</span><span style="color: #0000ff;">if</span>(<span style="color: #008080;">preg_match</span>('/^\/test.html/isU', <span style="color: #800080;">$reqUri</span><span style="color: #000000;">)){</span><span style="color: #008000;">//</span><span style="color: #008000;">解析请求地址</span> <span style="color: #0000ff;">include</span> 'test.php'<span style="color: #000000;">; </span><span style="color: #0000ff;">exit</span><span style="color: #000000;">();}</span>私は非常に才能のある人間です。知識が少ないので不足がある場合は補ってください。