1

私は自分のMacでApacheサーバーを使用していますが、すべてがうまく機能しています。

index.phpこれで、非常に複雑なWebページができました。ではindex.php、次のようなURLが必要ですlocalhost/~username/hostname/page_a。そして、の内容page_aは実際にはフォルダ.phpに保存されているファイルですcontent。したがって、index.phpでは、を解析しpage_a、インクルード:''を実行してリクエストページをレンダリングします。

しかし.htaccess、では、リダイレクトルールが適切に構成されていませんでした。

たとえば、リンクをクリックした場合:localhost/~username/hostname/page_a、このURLをにリダイレクトする方法はありますか?index.php同時に、URLは引き続きであるlocalhost/~username/hostname/page_aため、index.php正しく解析およびレンダリングできますか?

ありがとう。

4

1 に答える 1

3

これindex.phpがリクエストをどのように処理するかによって異なります。$_SERVER要求されたファイルを見つけるために変数を調べるだけの場合は、'REQUEST_URI'何も渡す必要はありません。クエリ文字列パラメーターを探す場合、書き換えルールはそれを渡す必要があります。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L]

または、クエリ文字列パラメーターを渡す必要がある場合:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?url=$1 [L,QSA]

Rルールにフラグまたはがないhttp://と、ブラウザーの URL アドレス バーは変化しません。誰かhttp://localhost/~username/hostname/page_aがブラウザに入力すると、/~username/hostname/page_aリクエストがサーバーに送信され、書き換えルールによって内部的に書き換えられ/index.php、php スクリプトはリクエスト$_SERVER['REQUEST_URI']を見つけて/~username/hostname/page_a適切にルーティングする$_GET['url']か、2 番目のルールの場合はパラメータを参照できます。使用されている。

于 2012-10-03T21:13:17.880 に答える