web-dev-qa-db-ja.com

WordPressのmod_rewriteが他のmod_rewriteルールをキャンセル/上書きしています

/www/では、.htaccessファイルがあります。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^([^.]*\.less)$ compilers/lessphp.php?file=$1 [R,QSA,L]
</ifModule>

このコードは、私がWordPressが置かれている/www/blog/の.lessファイルを要求し、標準のかなりパーマリンクのmod_rewriteを含むそれ自身の.htaccessファイルを持つまで、うまくいきます。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /blog/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /blog/index.php [L]
</IfModule>

WordPressのmod_rewriteコードをルートに移動し、それを自分のmod_rewriteの前に置くと、すべて期待通りに動作します。

# BEGIN WordPress
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /blog/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /blog/index.php [L]
</IfModule>
# END WordPress

# BEGIN LESSPHP
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^([^.]*\.less)$ compilers/lessphp.php?file=$1 [R,QSA,L]
</ifModule>
# END LESSPHP

ここでの厄介なのは、パーマリンクに関して行うWordPressの修正です。私は.htaccessから/www/blog/コードを切り取ってそれをルートに移動することを忘れないでください。

WordPressが上書きしないようにmod_rewriteを改良する方法はありますか。また、自然に配置されている場所にすべて残すことができますか?私はむしろ、ルートとワードプレスの後の両方に私のルールの2つのインスタンスを持つ必要はないでしょう。また、WordPressのmod_rewriteルールは、パーマリンク設定を更新するだけで上書きされるため、変更する必要があります。

2
user19606

手っ取り早い解決策は、.htaccessファイルのアクセス権を変更することです。したがって、Wordpressで設定を変更した場合は、.htaccessに手動で変更する必要があることが表示されます。

2
stealthyninja