web-dev-qa-db-ja.com

書き換えルールが仮想ホストで動作していない、すべてがindex.phpに行きます

私のバーチャルホストでwordpressのhtaccessルールを設定した後、私はwp-admin領域に入ることができませんでした。私はいつも私のワードプレスインスタンスのフロントページにリダイレクトされました。

書き換え自体はメインページで行われました。すべてのリンクはこれまでのところうまくいきましたが、管理領域はアクセスなしで残ります。

使用される書き換え規則:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

個人的に私はどこから見ていいのかわからない、Googleでその問題を見つけることさえできない、ちょっとめったにない。

2
Sam

そうですね、最初の問題はHow to get the Rewrite Rule working at a VHOST Environmentで、答えは(不明な場合)少し難しいものでした。 RewriteBaseはVHOSTでは動作しません。解決策は、このようにすべてのRewrite-StuffをDirectory-Sectionに配置することです。

<VirtualHost *:80>
  ServerName www.mydomain.tld
  ...more config stuff...

  <Directory "/var/www/mydomain">
    RewriteEngine On
    RewriteBase /

    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
  </Directory>
</VirtualHost>

それでうまくいきます。今後Googleでより良い結果が得られるように、質問のタイトルを更新します。誰もが同じ問題にぶつかるのを助けるかもしれないことを願っています。

2
Sam

これが助けになるかどうかは定かではありませんが、そのベストプラクティスとして、ルールの前後にBEGINおよびEND WordPressのコメントを含め、mod_rewriteのチェックを含めます。

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

また:

  • 管理領域でパーマリンクを選択して保存するまでは、これらの規則を適用しないでください。一度行った後は、必ず.htaccessファイルをセットアップしてください。
  • コメントは、コアとなるワードプレスの規則を乱すことなくhtaccessファイルを書き換えることを可能にするためにプラグインによって使用されます。
  • 書き換えベースが正しく設定されていることを確認してください。
1
Tom J Nowell

私は自分のvhost設定で次のものを使っています、これでプロジェクトディレクトリの.htaccessファイルを使うことができます。

<Directory "YOUR-PROJECT-PATH">
    Options FollowSymLinks Includes ExecCGI
    AllowOverride All
    DirectoryIndex index.html index.htm index.php
</Directory>
0
kennyevo