0

Mod_Rewriteにいくつかの問題があります。私はこれがモジュールへの私の最初の冒険であることを認めなければならないので、私は何か愚かなことを経験することができました。私はこれを1日ほど自分で動作させようとしてきましたが、なぜこれが動作しないのか理解できません。

次のエラーが発生します。

注意:未定義のインデックス:31行目のD:\ wamp \ www \ WildForFashion \ Portal\Index.phpのDir

私が達成しようとしているのは、1つのテンプレートページ(index.php)を作成し、Mod_RewriteでURLを変更して、検索に適したものにし、コーディングと設計を容易にすることです。

画像/CSSファイルがまったく読み込まれない場合にも問題が発生していました。絶対URLを使用すると機能することを読みました。

今のところ、私は最初にポータルディレクトリ(ウェブサイトのメンテナンス用の管理ページ)で作業していて、次にルートディレクトリに移動します。1つまたは2つの.htaccessファイルが必要かどうかわかりません(1つはルートディレクトリにあり、2つ目はポータルディレクトリにあります)。

DIRフォルダーは、次のようなWebサイトの各カテゴリーとページを保持します。

Domain.com/{CATAGORY}/{PAGE}/
ROOT / DIR / {CATAGORY} / {Page}.php

Domain.com/Portal/{CATAGORY}/{PAGE}/
ROOT / Portal / DIR / {CATAGORY} / {Page}.php

.htaccess前

RewriteEngine on
RewriteRule ^/Portal/$      Portal/Index.php?Dir=Portal&Page=Home   [L,QSA]
RewriteRule ^Portal/(.*)/(.*)$  Portal/Index.php?Dir=$1&Page=$2 [L,QSA]
RewriteRule ^Portal/(.*)/$      Portal/Index.php?Dir=$1&Page=Home   [L,QSA]

.htaccess After(Working w / Exceptions)

RewriteEngine on
RewriteRule Portal/$     Portal/Index.php?Dir=Portal&Page=Home   [L,QSA]
RewriteRule Portal/([^/]+)/$     Portal/Index.php?Dir=$1&Page=Home   [L,QSA]
RewriteRule Portal/([^/]+)/([^/]+)/$     Portal/Index.php?Dir=$1&Page=$2 [L,QSA]

Index.php

<?php
include_once("DIR/" . $_GET['Dir'] . "/" . $_GET['Page'] . ".php");
?>

ディレクトリツリー

  • CSS
  • DIR
  • IMG
  • JS
  • SRC
  • ポータル
    • CSS
    • DIR
      • ポータル
      • 在庫
      • 統計
      • 注文
    • IMG
    • JS
    • SRC
    • Index.php
    • .htaccess
  • Index.php
4

1 に答える 1

1

一致ルールに存在する必要のないスラッシュを含め、必要なリダイレクトパスからそれらを除外します。これを試して:

RewriteRule Portal/$      Portal/Index.php?Dir=Portal&Page=Home   [L,QSA]

RewriteRule Portal/(.*)/(.*)$  Portal/Index.php?Dir=$1&Page=$2 [L,QSA]

RewriteRule Portal/(.*)/$      Portal/Index.php?Dir=$1&Page=Home   [L,QSA]

これは、URIの先頭である必要があることを示しているため、書き換えルールの一致する部分から^を削除したことに注意してください。また、置換パターンの前の「/」も削除しました。

于 2012-07-26T20:33:09.843 に答える