2

メインのパブリック ディレクトリにこの .htaccess ファイルがありますが、アクセス/registerすると 404 エラーが発生します。

Options +FollowSymlinks
RewriteEngine On
RewriteRule ^register$ register.php

/registerこれで、訪れた人なら誰でも使えるようにしたい/register.phpmod_rewriteが有効になっておりAllowOverride All、仮想ホスト ファイルに存在することは確かです。

これをトラブルシューティングする方法を知っている人はいますか? 私が得るのはThe requested URL /register was not found on this server.

仮想ホスト:

<VirtualHost *:80>
        ServerAdmin my@email.com

        ServerName my.site.com
        DocumentRoot /home/mark/public
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /home/mark/public>
                Options All MultiViews ExecCGI
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog /home/mark/logs/public_error.log
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
        CustomLog /home/mark/logs/public_access.log combined
</VirtualHost>
4

2 に答える 2

2
    <Directory /home/mark/public>
            Options All MultiViews ExecCGI
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>

MultiViewsをオフ にする必要があります。

            Options All -MultiViews ExecCGI

オプションのコンテンツ ネゴシエーションをいじっています。Apacheのドキュメントから:

サーバーが /some/dir/foo の要求を受け取り、/some/dir/foo が存在しない場合、サーバーはディレクトリを読み取り、foo.* という名前のすべてのファイルを探し、それらすべての名前を付けた型マップを効果的に偽造します。クライアントがファイルの 1 つを名前で要求した場合と同じメディア タイプとコンテンツ エンコーディングを割り当てます。次に、クライアントの要件に最適なものを選択し、そのドキュメントを返します。

に書き換えるルールがある場合/register/register.phpMutliViews が書き換えルールに到達する前に物事を台無しにしたくありません。

于 2012-09-27T21:08:38.047 に答える
0

これは私のために働く:

/etc/apache2/sites-enabled/000-default

<VirtualHost *:80>
        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
        ....
</VirtualHost>

/var/www/.htaccess

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} ^/register$
RewriteRule ^(.*)$ register.php [NS,L]

編集: DocumentRoot /var/www を追加

于 2012-09-27T20:42:12.097 に答える