1

現在、ローカル マシンでいくつかのソフトウェアを開発しています。この質問のために、ソフトウェアを呼び出しましょうStackOverflow。私は以下のページを持っています

C:\sites\StackOverflow\index.php
C:\sites\StackOverflow\content\page1.php
C:\sites\StackOverflow\content\page2.php
C:\sites\StackOverflow\content\page3.php

私の現在の環境では、http://localhost/StackOverflow/index.php正常に動作します。また、コンテンツ ページ用に記述した URL は のようになりhttp://localhost/StackOverflow/content/page1.phpます。

これを本番環境にデプロイすると、URL はローカル ホストではなく、まだ決定されていない IP またはホスト名になります。デプロイ時にできる限り作業を少なくするには、どのように URL を記述すればよいですか?

4

6 に答える 6

2

ルートに対して相対的に開始します: /.

例えば:

/StackOverflow/index.php
/StackOverflow/content/page1.php
/StackOverflow/content/page2.php
/StackOverflow/content/page3.php

それらには、現在のドメインまたは<base>.

于 2013-07-16T14:21:58.013 に答える
1

絶対的な http パスは必要ありません。実際に HTTPS を使用すると問題が発生する可能性があります。HTTP を指しているリンクのいずれかがブラウザに「安全でないコンテンツ」エラーを表示させる可能性があるためです。

// This allows you to deploy to different enviroments where some might
// have the page _not_ in the site root, without having to edit
// 1000s of lines of code.
$config['baseurl'] = '/StackOverflow';

// then when you echo an url you can just
echo $config['baseurl'] . '/content/page1.php';
于 2013-07-16T14:24:43.977 に答える
1

動的にしたい場合は、次のようにできます。

$pathInfo = pathinfo($_SERVER['SCRIPT_NAME']);
$baseUrl = rtrim($pathInfo['dirname'], "\\/");

この baseUrl をリクエスト オブジェクトに保存し、ビュー スクリプトで使用します。これはあなた次第です..

次のように使用します。

<a href="<?php echo $baseUrl; ?>/content/page1.php">Test</a>

たとえば、メールを送信してサイトに戻る必要がある場合は、絶対 URL が必要になることがあります。

$rootUrl = 'http';
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') {
    $rootUrl .= 's';
}
$rootUrl .= '://'.$_SERVER['SERVER_NAME'];
if ($_SERVER['SERVER_PORT'] != '80') {
    $rootUrl .= ':'.$_SERVER['SERVER_PORT'];
}
$rootUrl .= $baseUrl;

$rootUrlと同じように使います$baseUrl

于 2013-07-16T14:29:59.700 に答える
1

私は常に構成ファイルにいくつかの定数を割り当て、すべてのパスをそれに基づいています。

 if ($_SERVER["APP_ENVIRONMENT"] == "development"){
   define("BASE_PATH", "C:/sites/StackOverflow/development/");
   define("BASE_URL", "/development/");
 } else {
   define ("BASE_PATH", "/home/www.mysite.com/htdocs/");
   define ("BASE_URL", "/");
 }

次に、URLを実行するときに、次のようなパスを作成します

 $url = BASE_URL."path/to/whatever.jpg";

ファイル参照用

 include (BASE_PATH."libraries/mylib.php");

PutEnv を使用して、環境ごとに htaccess で $_SERVER["APP_ENVIRONMENT"] を設定できます。

SetEnv APP_ENVIRONMENT development
于 2013-07-16T14:31:57.887 に答える
1

私は通常、アプリのルート ディレクトリを指す $baseurl 変数と $basepath 変数をアプリの構成ファイルに設定し、フロントエンドでこれらの変数を URL の前に付けるだけです。

このようにして、サイトをあるサーバーから別のサーバーに簡単に転送でき、サブディレクトリ内のアプリでも機能します

于 2013-07-16T14:26:43.927 に答える