0

最近、次の Web ルートから CodeIgniter ベースの Web サイトを移動する必要がありました。

/var/www/vhosts/dev/

に:

/var/www/vhosts/dev/site1/

私が遭遇している問題は、ドメインから引き続きアクセスできるようにするために Web ルートが必要なことです: www.devdomain.com

明らかに Web ルートを参照していたため、すべての相対リンクが壊れています。site1/すべての相対ベースのリンクに自動的に追加する、トップレベルで使用できる書き換えルールまたは何かがありますか?

では、通常はどうだったでしょう。

<a href="/enrollment">Enrollment</a>
https://www.devdomain.com/enrollment

今になる必要があります。

<a href="/enrollment">Enrollment</a>
https://www.devdomain.com/site1/enrollment

どんな助けでも大歓迎です。

4

2 に答える 2

0

$config['base_url'] 修正ニコラが言及しているリンクで

<a href="<?php echo base_url(); ?>/enrollment">Enrollment</a>

どうやらコードを調べたくないので、問題は Codeigniter ではなくサーバー (?) にあります。おそらく、.htaccess ファイルの RewriteRule が役に立ちます (Apache を使用している場合)。

私の担当者レベルが低いため、他の回答にコメントすることはできません。そうでなければ、ニコラの回答にコメントしただけです。

編集:私はこれを理解しました。href 属性から最初の「/」を削除する必要があります。それはウェブサーバーのルートに行きます。それは相対リンクですが、あなたが考える方法ではありません。「/」を削除すると、リンクはファイルと同じディレクトリ レベル (この場合は Codeigniter のインストール) にあるファイルに移動します。申し訳ありませんが、コード全体を確認する必要があります。

さらに、site_url() を使用して Codeigniter 内のコントローラー間をリンクすることをお勧めします。これは、この種の状況や他の多くの状況に役立ちます。

2 番目の編集: site_url() ではなく base_url() です。混乱して申し訳ありません。コードを修正しただけです。

于 2013-01-25T17:33:55.833 に答える
0

base_url()vsのトピックとsite_url()、一方を他方よりも優先して使用する理由については、こちらの私の回答をご覧ください。

適切な codeigniter ベース URL を設定するには?

CodeIgniter によって生成されたページへのリンクを生成するにsite_url()は、実際には正しい関数です。さらに、URL を引数として関数に文字列として渡すと、URL の生成がより簡潔になります。観察:

<a href="<?php echo base_url(); ?>/enrollment">Enrollment</a>

対:

<a href="<?php echo site_url('enrollment'); ?>">Enrollment</a>

あるいは:

<?php echo anchor('enrollment', 'Enrollment'); ?>
于 2013-01-25T18:51:56.030 に答える