1

私はapacheのmod_rewriteモジュールを使用して、URL構造(1つのインスタンスwww.mydomainname.com/user.php?u=somename)を.のような派手なURLに改善していますwww.mydomainname.com/user/somename。CSSとJSの相対パスの問題という非常に悪い状況に陥るまで、私はそれを成功裏に達成しました。開くとwww.mydomainname.com/user/somename、CSSとJSがなくても、テキストと基本的なHTMLだけで正常に読み込まれます。Chromeの「要素の検査」機能を使用しました。これは、発生した次のエラーを知るのに役立ちます。

GET http://www.mydomainname.com/user/css/style.css 404 (Not Found) somename:5
GET http://www.mydomainname.com/user/css/developer.css 404 (Not Found) somename:6
GET http://www.mydomainname.com/user/js/jquery-1.5.2.js 404 (Not Found) somename:7
GET http://www.mydomainname.com/user/js/jquery.form.js 404 (Not Found) somename:5

.htaccessファイルには次の内容が含まれています-

DirectoryIndex index.html.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule    ^user/([^/.]+)/?$    user.php?u=$1    [L]

user.phpは、CSSフォルダーとJSフォルダーだけでなく、親フォルダーにも存在します。原因はわかりましたが、エラーを取り除く方法がわかりません。

編集:user.phpファイルで指定されたCSSとJSのパスは-

<link type = "text/css" rel = "stylesheet" href = "css/style.css">
<link type = "text/css" rel = "stylesheet" href = "css/developer.css">
<script type="text/javascript" src="js/jquery-1.5.2.js"></script>
<script type="text/javascript" src="js/jquery.form.js"></script>
4

3 に答える 3

7

絶対パスを追加してみてください(/URLの先頭に追加するだけです)。

<link type = "text/css" rel = "stylesheet" href = "/css/style.css">
<link type = "text/css" rel = "stylesheet" href = "/css/developer.css">
<script type="text/javascript" src="/js/jquery-1.5.2.js"></script>
<script type="text/javascript" src="/js/jquery.form.js"></script>
于 2012-11-09T10:30:22.277 に答える
2

試す

 DirectoryIndex index.html.php
 RewriteEngine on
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule    ^user/([^/.]+)/?$    user.php?u=$1    [L]

ファイルのリクエストは許可しているが、ディレクトリのリクエストは許可していないと思います。JS/CSSファイルはサブディレクトリにあります。

//UPDATE使用している相対パスが問題です。

パスに貼り付けたコードは、基本的に、現在のフォルダーのサブフォルダーでこのcssファイルを探します。サブフォルダーが存在しないため、エラーが発生します。

コードを次のように変更します。

<link type = "text/css" rel = "stylesheet" href = "/css/style.css">
<link type = "text/css" rel = "stylesheet" href = "/css/developer.css">
<script type="text/javascript" src="/js/jquery-1.5.2.js"></script>
<script type="text/javascript" src="/js/jquery.form.js"></script>

これは、ルートフォルダからファイルを探すように変換されます。

于 2012-11-09T10:11:30.713 に答える
-2

あなたはそれについて心配する必要はありません。apacheから「httpd.conf」ファイルを開くことができます。下の行からハッシュを削除します。

例:

#LoadModule rewrite_module modules/mod_rewrite.so

それを変更します:

LoadModule rewrite_module modules/mod_rewrite.so
于 2012-11-09T10:18:09.050 に答える