5

このトピックに関する情報はあまりないように思われるので、私の特定の問題の概要を説明します。それから、質問と回答をもう少し普遍的なものにすることができるかもしれません。

私はこの書き換えルールを持っています

RewriteEngine On
RewriteBase /bookkeepers/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/?$ index.php?franchise=$1

この URL を変更するもの

http://example.com/location/kings-lynn

この中に

http://example.com/location/index.php?franchise=kings-lynn

私が抱えている問題は、末尾にスラッシュを追加すると

http://example.com/location/kings-lynn/

クエリ文字列は次のように返されます

franchise=kings-lynn/

何らかの理由で、CSS ファイルと Javascript ファイルが読み込まれていません。

何か案は?

4

2 に答える 2

10

@Paul Tomblin が言ったように、.+ は貪欲です。つまり、可能な限り一致しています。

^(.+[^/])/?$何にでも一致するように指示し、その後に / 以外の文字が続き、その後にオプションの / が続きます。これには、末尾の / をキャプチャしないという効果があります。

CSS と Javascript が機能しない最も可能性の高い理由は、src="my.js" のような相対パスを使用していることです。末尾にスラッシュがあるとディレクトリのように見えるため、ブラウザは /location/kings-lynn/my.js を探します。これは、ファイルへの絶対パス (例: /location/my.js) を使用することで簡単に修正できます。

于 2008-11-24T17:48:33.110 に答える
6

(.+) が貪欲に一致しているようです。その場合、あなたは試すことができます

RewriteRule ^(.+[^/])/?$ index.php?franchise=$1

これにより、最初のグループ (括弧内) がスラッシュで終わらないことが保証されます。

于 2008-11-24T17:41:15.590 に答える