0

私は以下のフォルダ構造(基本構造)を持つphpウェブサイトを持っています。

  • project_name
    • アプリ
      • コントローラ
      • モデル
      • 見る
    • css
    • js
    • img
    • index.php

したがって、WAMPでindex.phpを表示すると、URLは次のようになります。http://localhost/project_name/

しかし、サイト内に入ると(たとえば、viewフォルダーの下にあるlogin.php)、URLは次のようになります。http://localhost/project_name/app/view/login.php

.htaccessを使用してURLを変更できることがわかりました。だから私はこれを(.htaccessで)試しました。

RewriteEngine on
RewriteBase /
Redirect 301 /project_name/app/view/login.php /project_name/login.php
RewriteRule ^/project_name/login.php$ /project_name/app/view/login.php [L]

今のURLはhttp://localhost/project_name/login.php正しいです。しかし、phpはファイルを取得するために元のリンクを使用していないようです(つまり、から/project_name/app/view/login.php)が、ここから/project_name/login.php

したがって、404エラーがスローされます。

何を変更すればよいですか?/app/view/私を助けてください、私はユーザーが私のフォルダ構造を見ないようにURLから一部を隠そうとしています。私は今日約9時間それを行うためのさまざまな方法について読みましたが、それでも何も正しく機能させることができませんでした。

私の質問が十分に明確であることを願っています。どんな助けでも大歓迎です!

4

1 に答える 1

0

htaccess ファイルの書き換えルールを介して渡された URI では、先頭のスラッシュが削除されているため、ルールは次のようになります。

RewriteRule ^/project_name/login.php$ /project_name/app/view/login.php [L]

のため、何にも一致しません^/。また、以前のリダイレクトに一致する URI に書き換えているため、ブラウザはリダイレクト ループを見て、正しくリダイレ​​クトされていないと言います。URI ではなく、実際のリクエストと照合する必要があります。

RewriteEngine on
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /project_name/app/view/login\.php
RewriteRule ^ /project_name/login.php [L,R=301]

RewriteRule ^/?project_name/login.php$ /project_name/app/view/login.php [L]
于 2012-10-01T18:25:10.990 に答える