0

私のphpプロジェクトには次の構造があります。

- classes
    - model.php
- views
    - header.php
    - footer.php
    - user.php
- resources
    - css
        - stylesheet.css
    - js
        - my_javascript.js
- index.php
- controller.php

.htaccess ファイル

RewriteEngine On
RewriteRule ^/?resources/(.*)$ resources/$1 [L]
RewriteRule ^([a-zA-Z]+)/?([a-zA-Z0-9/]*)$ index.php?page=$1&query=$2 [L]

header.php

<!DOCTYPE html>
<html>
    <head>
       <!-- Styles -->
       <link href="resources/css/stylesheet.css" rel="stylesheet" media="screen">
    </head>
    <body>

問題は、他の多くの人が以前にstackoverflowで言及したように(しかし、その解決策は私にはうまくいきませんでした)、現在、すべてのページをindex.phpを介してリダイレクトしているため、stylesheet.cssなどのリソースファイルもリダイレクトしていることです.

1:私が尋ねるとmydomain/user、正しい css がロードされた正しいリソースを取得します ( mydomain/resources/css/stylesheet.css)

2:しかし、アプリを RESTful にしようとしているmydomain/user/4ときに、次のようなページがあり、このようなリクエストを行うと、css が突然読み込まれません。http リクエストを見て ( mydomain/user/resources/css/stylesheet.css)を探している

を含めることで解決しようとしました$_SERVER['DOCUMENT_ROOT']。それは機能せず、「良い」解決策ではないようです。ご協力いただきありがとうございます。はい、私はphpの初心者です!

4

2 に答える 2

1

URL をマスクしており、実際のスクリプトは URL にあるものとは異なるフォルダー構造で実行されるため、プログラムで参照する CSS、画像、Javascript などへのフル パスを指定する必要があります。

コードを次のように変更できます

<link href="http://www.yourdomainname.com/resources/css/stylesheet.css" rel="stylesheet" media="screen">

または、ファイルへの相対パスを使用します

<link href="/resources/css/stylesheet.css" rel="stylesheet" media="screen">

ファイル パスの先頭で使用/しているため、サーバーは Web サイトのルート作業ディレクトリからファイルを探します。

これに加えて、以下のように htaccess ファイルに条件を追加する必要があります

RewriteCond %{REQUEST_FILENAME} !(resources|img|anyother folders that you want to ignore|anyother folders that you want to ignore|...)
RewriteRule ^([a-zA-Z]+)/?([a-zA-Z0-9/]*)$ index.php?page=$1&query=$2 [L]

RewriteRule ^/?resources/(.*)$ resources/$1 [L]これらの変更を行った後、htaccess で不要になることを願っています

于 2013-06-29T05:38:35.183 に答える
0

htaccess の変更がうまくいかなかったので、代わりにこのようにヘッダーを絶対パスにロードしました

$http_host = $_SERVER['HTTP_HOST'];
$file_path = $_SERVER['PHP_SELF'];
$info = pathinfo($file_path);
$root_path = "http://" . $http_host . $info['dirname']; 
$path = $root_path . "/resources/css/stylesheet.css";

これが同じ問題を抱えている他の誰かに役立つことを願っています...

于 2013-07-02T10:42:38.447 に答える