2

このコンテンツを含む Wordpress Web サイトの .htaccess ファイルがあります。

# 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

このコンテンツを自分のサイトの Apache 仮想ホスト (以下) に移動し、htaccess ファイルを削除しました。

<VirtualHost *:80>
ServerName 68.183.153.223
DocumentRoot /home/david/wordpressWebSite

# 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

</VirtualHost>

ただし、Apache を再起動しようとすると、Apache がエラーを出力します。

RewriteBase: only valid in per-directory config files
Action 'restart' failed.

htaccess ファイルの内容を仮想ホストに移動できると考えました。間違っているとは何ですか?

4

2 に答える 2

5

docsによると、RewriteBase「ディレクトリごとの書き換えのベース URL を設定します」。

ディレクトリごとの書き換えを設定していないため、ディレクティブは、特定のディレクトリの .htaccess ファイルの外では意味がありません。

于 2012-05-31T15:17:45.973 に答える
2

RewriteBase は virtualhost ファイルでは機能しません。

おそらく尋ねたい質問は次のとおりです。

VHost RewriteRules に相対パスを含めるにはどうすればよいですか?

特に vhost では、*_FILENAME は、ファイルシステムに対して相対的またはマップされるのではなく、スラッシュとそれに続く REQUEST_URI を返します!
例: %{SCRIPT_FILENAME}

  • .htaccess: "assets/style.css"
  • 仮想ホスト ファイル: "/assets/style.css"
  • 必要なもの:「/var/www/assets/style.css」

いくつかの解決策があります。

  • 解決策 #1 : %{DOCUMENT_ROOT}

    RewriteRule ^/foo/bar$ %{DOCUMENT_ROOT}/foo/baz
    
    RewriteCond %{DOCUMENT_ROOT}/%{SCRIPT_FILENAME} !-f
    RewriteRule (.*) /script.cgi
    
  • 解決策 2 :<Directory> tags

    RewriteEngine On
    <Directory "/var/www/">
        ...
        RewriteCond %{SCRIPT_FILENAME} !-f
        RewriteRule (.*) /script.cgi
    </Directory>
    

    directory タグ内では、*_FILENAME は htaccess ファイルと同じように扱われます。
    サーバーに複数のエイリアスがある場合、これを使用すると問題が発生する可能性があります。

  • 解決策 #3 : %{REQUEST_URI}

    可能であれば%{ _FILENAME} の代わりに %{ _URI} を使用
    してください 本当の答えではありません。*_URI はファイルシステムにマップすることは想定されていないため、書き換える必要はありません。そのため、vhost/htaccess パスは同じです。ただし、常に REQUEST_URI を使用できるとは限りません。David Faux は上記のように遅いとコメントしています。その上、これ

于 2013-10-20T20:43:15.640 に答える