web-dev-qa-db-ja.com

RewriteBaseルールは.htaccessで機能しますが、httpd.conf(<Directory ...>内)では機能しませんか?

例を挙げて説明しましょう...

ファイル:/var/www/example.com/public/wp-content/cache/minify/.htaccess

<IfModule mod_rewrite.c>

    # THIS WORKS...
    RewriteBase /wp-content/cache/minify/
    RewriteRule /w3tc_rewrite_test$ ../../plugins/w3-total-cache/pub/minify.php?w3tc_rewrite_test=1 [L]
    RewriteCond %{REQUEST_FILENAME}%{ENV:APPEND_EXT} -f
    RewriteRule (.*) $1%{ENV:APPEND_EXT} [L]
    RewriteRule ^(.+/[X]+\.css)$ ../../plugins/w3-total-cache/pub/minify.php?test_file=$1 [L]
    RewriteRule ^(.+\.(css|js))$ ../../plugins/w3-total-cache/pub/minify.php?file=$1 [L]

</IfModule>

ファイル: /etc/Apache2/httpd.conf

<Directory /var/www/example.com/public>

    AllowOverride None

    Options -MultiViews

    [...]

    <IfModule mod_rewrite.c>
        Options +FollowSymlinks
      # Options +SymLinksIfOwnerMatch
        RewriteEngine On
      # RewriteBase /
    </IfModule>

    [...]

    <IfModule mod_rewrite.c>

        # BUT THIS ISN'T WORKING!!!
        RewriteBase /wp-content/cache/minify/
        RewriteRule /w3tc_rewrite_test$ ../../plugins/w3-total-cache/pub/minify.php?w3tc_rewrite_test=1 [L]
        RewriteCond %{REQUEST_FILENAME}%{ENV:APPEND_EXT} -f
        RewriteRule (.*) $1%{ENV:APPEND_EXT} [L]
        RewriteRule ^(.+/[X]+\.css)$ ../../plugins/w3-total-cache/pub/minify.php?test_file=$1 [L]
        RewriteRule ^(.+\.(css|js))$ ../../plugins/w3-total-cache/pub/minify.php?file=$1 [L]

    </IfModule>

    [...]

</Directory>

パフォーマンスのために、サーバーで.htaccessの使用を無効にし、代わりにhttpd.conf構成ファイルを使用します。これは上記のとおりです。

重要なのは、特定のディレクトリ(/var/www/example.com/public/wp-content/cache/minify/)に配置されている.htaccessルールは機能しますが、私のhttpd.confファイルの同じルールは機能しません。 t。理由はわかりません。ここで何が間違っているのでしょうか?

1
its_me

これが最善の方法かどうかはわかりませんが、機能します。基本的に、2番目のRewriteEngine Onセクションにも<Directory>ルールが必要です。

ファイル: /etc/Apache2/httpd.conf

<Directory /var/www/example.com/public>
    AllowOverride None
    Options -MultiViews

    [...]

    <IfModule mod_rewrite.c>
        Options +FollowSymlinks
      # Options +SymLinksIfOwnerMatch
        RewriteEngine On
      # RewriteBase /
    </IfModule>

    [...]
</Directory>

<Directory /var/www/example.com/public/wp-content/cache/minify>
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /wp-content/cache/minify/
        RewriteRule /w3tc_rewrite_test$ ../../plugins/w3-total-cache/pub/minify.php?w3tc_rewrite_test=1 [L]
        RewriteCond %{REQUEST_FILENAME}%{ENV:APPEND_EXT} -f
        RewriteRule (.*) $1%{ENV:APPEND_EXT} [L]
        RewriteRule ^(.+/[X]+\.css)$ ../../plugins/w3-total-cache/pub/minify.php?test_file=$1 [L]
        RewriteRule ^(.+\.(css|js))$ ../../plugins/w3-total-cache/pub/minify.php?file=$1 [L]
    </IfModule>
</Directory>
2
its_me