1

ここに私のウェブのファイル構造があります

css/
script/
images/
.htaccess
index.php
ajaxusername.php

.htaccess コンテンツ

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(\w+)/(\w+)$ index.php?d=$1&t=$2 [QSA]
RewriteRule ^(\w+)/?$ index.php?d=$1


http://www.abc.com/peter/と入力すると、 http://www.abc.com/index.php?d=peterに正常
に変換されます。http://www.abc.com/peter/passwordを 入力すると、 http://www.abc.com/index.php?d=peter&t=passwordにも正常に変換されます。



問題は
/peter/、上記のフォルダーにリストされているリソースを正常に取得できるが、
/peter/passwordそれらのリソースを取得できないことです。

firebug をチェックインすると、無効な URL である
http://www.abc.com/peter/css/user.cssを指していることがわかります。正しい URL は、前の URL ではなくhttp://www.abc.com/css/user.cssを指す必要があります。 なにか提案を?ありがとう!!



4

2 に答える 2

0

サーバー上に存在するファイルとディレクトリへのリクエストの書き換えルールに例外を追加する必要があるようです。そうしないと、ファイルがクライアントのブラウザからリクエストされたときに、URL が書き換えられるため、それらのファイルは提供されません。

次の行を追加してみてください。

RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .? - [S=2]

あなたのhtaccessファイルに:

Options +FollowSymlinks
RewriteEngine on

...put them here...

RewriteRule ^(\w+)/(\w+)$ index.php?d=$1&t=$2 [QSA]
RewriteRule ^(\w+)/?$ index.php?d=$1

また、リソースにアクセスできる必要があります。

于 2013-07-08T15:31:47.127 に答える
0

問題は、css、js、および画像に相対パスを使用していて、きれいな URL スキームを使用し始める/part1/part2と、リソースの URL が台無しになることです。ご指摘のとおり、css URI/peter/css/user.css/css/user.css.

ここに役立ついくつかの解決策があります。

解決策 1:問題を解決するには、css、js、images ファイルで相対パスではなく絶対パスを使用することをお勧めします。http://つまり、これらのファイルのパスがまたはスラッシュで始まることを確認する必要があります/

解決策 2:静的ファイル (css、js、画像など) には絶対パスを使用することをお勧めします。ただし、これらのインスタンスが複数のページに多数ある場合は、HTML base タグを使用して相対パスのデフォルト URL を指定することを検討してください。例えば:

<base href="http://www.abc.com/" />

解決策 3: mod_rewrite ベースの解決策。上記の解決策を実装できない場合に使用します。

次のような .htaccess がありますか。

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

# don't do anything for a real directory, file or link
RewriteCond %{REQUEST_FILENAME} !-d [OR]
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule - [L]

# your original rewrite rules
RewriteRule ^(\w+)/?$ /index.php?d=$1 [QSA,L]
RewriteRule ^(\w+)/(\w+)/?$ /index.php?d=$1&t=$2 [QSA,L]

# rules to fix wrong paths of css, js and images
RewriteRule ^[^/]+/((?:css|script|images)/.*)$ /$1 [L,R=301,NC]
于 2013-07-08T15:32:12.260 に答える