3

PHP で URL を作成し、 if ステートメントでパス ( $path )を使用しようとしています。

職場では、ASP Classic を使用しており、次のようなことができるファイルがいくつかあります。

<%
 if path = "checkout" then

 <!--#include file="ViewCheckout.asp"-->

 elseif path = "billing" then

 <!--#include file="ViewBilling.asp"-->

 end if
%>

' if path = "checkout" ' は、サイトのほぼどこでも使用できます。奇妙なことに、「http://myworksite.com/checkout/ 」はチェックアウトページの URL ですが、サーバーには「checkout」と呼ばれるディレクトリはありません...上記は、 ' if path = "blah" ' 'start.asp' (ページの基本テンプレートを含むファイル) に表示されるインクルード。

私は、ParseURL.asp のようなファイルや、何らかの方法でこれらの URL を作成し、それらをグローバルに使用できるようにする他のファイル (作業中) を見てきました。これが PHP でどのように行われるかを学ぼうとしています (職場では、Windows Server を実行しており、Linux ボックスを使用しています)。

私がやろうとしているのは、それぞれのページに次の URL を作成することです。

繰り返しますが、パスのディレクトリを作成せずにこれらのURLを作成したいと思います。

*http_build_url**parse_url*を読みましたが、上記の方法で URL を作成する方法を判断するのに苦労しています。

私が見つけたhttp_build_urlチュートリアルはこれを示しています:

<?php
echo http_build_url("http://user@www.example.com/pub/index.php?a=b#files",
    array(
        "scheme" => "ftp",
        "host" => "ftp.example.com",
        "path" => "files/current/",
        "query" => "a=c"
    ),
    HTTP_URL_STRIP_AUTH | HTTP_URL_JOIN_PATH | HTTP_URL_JOIN_QUERY | HTTP_URL_STRIP_FRAGMENT
);
?>

問題は、これがftp://ftp.example.com/pub/files/current/?a=b&a=cをテキストとして出力するだけなのか、それとも有効な URL を作成する方法なのか、私にはわかりません。 .. (これは明らかに FTP アドレスです...) - PHP.net

注: 職場では、if path = "contact"を使用して、次のような特定のスニペットを含めることもできます。

<%
 if path = "contact" or path = "chat" or path = "checkout" then

 <div id="communication-nav">
  <ul>
   <li>Some link 1</li>
   <li>Some link 2</li>
   <li>Some link 3</li>
  </ul>
 </div>

 end if
%>

PHPを使用してこれを再作成する方法について誰かが私にいくつかの指針を与えることができれば、私は非常に感謝しています!

適切な機能を研究していますか? ある種の URL 書き換え機能を使用する必要がありますか?

4

3 に答える 3

1

この内容で index / document_root フォルダーに .htaccess ファイルを作成してみてください

  RewriteEngine on

  # If your site is running in a VirtualDocumentRoot at http://example.com/,
  # uncomment the following line:
  # RewriteBase /

  # Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
  # -- only if not a file
  RewriteCond %{REQUEST_FILENAME} !-f
  # -- only if not a directory
  RewriteCond %{REQUEST_FILENAME} !-d
  # -- never for favicon
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  # -- rewrite if all above remains true
  # -- e.g. /perma-links/this-is-it  becomes index.php?q=perma-links/this-is-it
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

書き換えモジュールのオーバーライドが許可されていない、または使用できない互換性のセットアップでは、コードブロックを次のようにラップします。

<IfModule mod_rewrite.c>
     #rewrite rules
</IfModule>
于 2012-09-02T22:02:56.237 に答える
1

mod_rewrite がインストールされている場合は、次の .htaccess ファイルを試してください。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([^/]*) $1.php
于 2012-09-02T22:12:03.973 に答える
0

多くの調査の結果、必要な方法でこれを行う方法を見つけました...最初に、index.phpファイルを「動的」にするコードを挿入しました。各ページの「コンテンツ」が表示される場所に配置しました...

<?
    $p = $_GET['page'];

$page = "pages/".$p.".php";

if(file_exists($page))
    include($page);
elseif($p=="")
    include 'pages/home.php';
elseif($p=="about")
    include 'pages/about.php';
elseif($p=="contact")
    include 'pages/contact.php';
elseif($p=="disclaimer")
    include 'pages/disclaimer.php';
else
    include '404.html';
?>

これは、誰かが表示しようとしているページに応じて表示したい適切な「コンテンツ」ファイルを含めることです。/pages/自分のサイトのディレクトリにさまざまなページを保存しました。これは好きなように変更できます。

次に(APACHEサーバーを実行していてmod_rewriteモジュールを実行している場合(ほとんどのホスティングサービスとAPACHEボックスでこのモジュールがアクティブになっている場合)、. htaccessファイルを開きます(またはサイトのディレクトリに存在しない場合は作成します)。メモ帳またはdreamweaverを使用して実行します。ファイルに「.htaccess」という名前を付け、「。txt」として保存しないようにします。

私が必要なことを達成するために、.htaccessファイルには以下が含まれている必要があります...

RewriteEngine on
RewriteRule ^(.*)/$ index.php?page=$1

^マークは文字列の始まりを示し、基本(.*)的にはここにあるものなら何でも示し/、/ about /(これにはもっとあります)であり、$私が信じる文字列の終わりを示します。

$の後のスペースに注意してください...スペースの後に、現在のURLを指定します(これは、私の回答の最初に生成されたコードのブロックです)...私の場合はindex.php?page=aboutでした。$ 1はPHP変数ではなく、約(または表示しているページが何であれ)の最初の変数の値を表します。

ここで、これに浸る前に「mod_rewrite」チュートリアルを調べることを強くお勧めします。それは私にとって新しく、かなり混乱しています。このビデオは私に役立ちました(http://www.practicalecommerce.com/articles/394-Video-Tutorial-Elimination-Dynamic-URLs-with-Mod-Rewrite)。

ここで助けてくれてありがとう!いつものように、それは大歓迎です!:)

これを構成すると、CSSが完全に壊れ、画像が表示されなくなりました。hrefsをいじって、ダイヤルしてもらいました。どうやら、これらの誤った「ディレクトリ」は、あたかも存在しているかのようにhrefに影響を与えますか?とにかく、これに遭遇しても慌てる必要はありません:)

于 2012-09-03T05:43:36.213 に答える