0

私はPHPでWebアプリケーションに取り組んでいます。
きれいな URL にしたいので、そのための .htaccess ファイルを作成しました。すべて問題ありませんが、ルールは 1 つだけです。
以下のコードを見てください。

RewriteEngine on
Options +FollowSymLinks

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rule No.1
RewriteRule ^(.*)/(.*)/(.*)/?$ index.php?page=$1&id=$2 [NC,N]

# Rule No.2
RewriteRule ^(.*)/?$ index.php?page=$1 [NC,L]

これは私の .htaccess ファイルの内容です。
ルール No.1 を削除すると、ページが のようになりwww.site.com/news、すべて正常に動作します。しかし、 page に移動しようとするとwww.site.com/news/1/sample-text、すべての CSS、JavaScript、および画像ファイルが破棄されます (もうアクセスできません)。
ルールNo.2を.htaccessファイルに書いたのですが、何も動かず、問題はスチールアライブです。

すべての画像、css、および javascript のパスは、形式に似てい./js/jquery.jsます。また、 .htaccessファイル
を入れました。RewriteBase /しかし ... :(

私を助けてください。

4

1 に答える 1

0

ルールは、次のようにするとより良くなります。

# Rule No.1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)/(.*)/?$ index.php?page=$1&id=$2 [L]

# Rule No.2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ index.php?page=$1 [L]

=> ここで RewriteCond 行を繰り返す必要があります。これらは、後続の RewriteRule にのみ適用されます。

ノート:

  • ここでは NC フラグ (大文字と小文字を区別しない) は役に立たない
  • 最初のルールは $3 を使用しません
  • ([^/]+) は (.*) よりも理にかなっています
于 2013-05-11T09:37:25.677 に答える