1

ディレクトリタグ内に書き換えルールを配置しました。質問をする前に、Apache のドキュメントを読んだことがあります。

リソースへの Web パス

RewriteRule ^/foo$ /bar

DocumentRoot が /usr/local/apache2/htdocs に設定されている場合、このディレクティブはhttp://example.com/fooの要求をパス /usr/local/apache2/htdocs/bar にマップします。

なので、書いてある通りにしました。
以下の例では、 /aaaaa を /index.php?action=aaaaaa にリダイレクトします。

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName test.com
    DocumentRoot /var/www/project/released/test

    <Directory /var/www/project/released/test>
            AllowOverride none
            Options Indexes FollowSymLinks MultiViews
            Order allow,deny
            allow from all

            RewriteEngine on                
            RewriteRule ^/([a-z0-9-_]+)$     /index.php?action=$1 [NC,L]
    </Directory>
</VirtualHost>

Apacheログには次のように書かれています:

[Mon May 27 23:14:11 2013] [error] File does not exist: /var/www/project/released/test/aaaaa

これが機能しない理由と、ログがまったく異なる動作を示す理由を教えてください (ドキュメントによると、明らかにこのパスは存在しませんが、存在すべきではありません!)。mod_rewrite をインストールして有効にしました。

4

0 に答える 0