Apache2とPHPでURL書き換えをしようとしていますが、問題はrewrite_modを使用する.htaccessファイルを作成し、ここにある:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ webroot/index.php [QSA,L]
^(.*)$
パターンは、すべてのものと一致する必要がありますが、それは空の要求と一致していない、と私はその理由を知りません。
例として、/root
フォルダは.htaccessファイルです。
- リクエスト
/root/anything
が一致します。 /root/some/thing
も一致します。- 要求
/root/
は一致していません。
ここで、/root/
要求はパターン^(.*)$
と一致する必要があります。「0回から任意の時間に任意の文字を一致させる」という意味です。
空のリクエストと一致しない理由を知っている人はいますか?
私は現在Linux Mintの下でLAMPを実行しています。 mod_rewrite
前
RewriteEngine On
# handles landing page
RewriteRule ^/?$ webroot/index.php [L]
# handles rest
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . webroot/index.php [L]
mod_dir
モジュールで実行されている場合と、すなわち/index.php
は、このように原因RewriteCond %{REQUEST_FILENAME} !-f
条件に、ルールの実行を阻止するランディングページにDirectoryIndex
ハンドラを追加します。
あなたの置き換え中のフォルダ 'webroot'は正確に何に対応していますか? –
htaccessに他のルールはありますか? – starkeen
'webroot'は' index.php'とウェブサイトの内容(画像、スクリプトなど)を含むフォルダです。 '.htaccess'は** webroot'フォルダの上の**レベルです。したがって、 '.htaccess'ファイルへのパスは'/root/.htaccess'で、 'index.php'へのパスは'/root/webroot/index.php'です。 '.htaccess'ファイルには他のルールはありません。 – TheKitsuneWithATie