で実行されているWebサイトがlocalhost/pm
あり、RewriteBaseが正しく設定されてい/pm/
ます。私のドキュメントにはリンクタグがあります:<link ... href="themes/default/css/default.css">
。
URLがlocalhost/pm
またはlocalhost/pm/foo
CSSが正常に機能する場合。ただし、URLにさらにスラッシュがあるlocalhost/pm/foo/bar
場合は、スタイルシートがに変更された場合の相対URLのようになりますfoo/themes/default/css/default.css
。
リンクタグに何らかのPHPパス解決を設定せずにこれを機能させるにはどうすればよいですか?
# invoke rewrite engine
RewriteEngine On
RewriteBase /pm/
# Protect application and system files from being viewed
RewriteRule ^(?:system)\b.* index.php/$0 [L]
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]
編集:
基本的に私が今必要としているのはこれです:リクエストにフォルダ名が含まれている場合/themes/
は、前のすべてをスクラップし/themes/
、残りを次のように書き直します/pm/themes/...
このように試しましたRewriteRule ^.*(/themes/.*)$ /pm/themes/$1
が、内部サーバーエラーが発生します。なんで?
このようにするとRewriteRule ^.*(/themes/.*)$ /pm/themes/
(つまり、末尾から$ 1を削除するだけで)、URLを使用するとhttp://localhost/pm/foo/themes/foo/
、結果の物理的な場所http://localhost/pm/themes
も予想どおりになります。これは、少なくとも私の正規表現が正しいことを意味します。私は何が欠けていますか?