余分なスラッシュがあります。.htaccess
とは異なり、前のスラッシュを使用しませんVirtual Host
。ディレクトリでも/login/
あります。したがって、実際のファイルではなく、実際のディレクトリである可能性があるものと一致しています。したがって、たとえば「/css/」が存在する場合、要求に応じてアクションとして index.php に書き換えます。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^login/
RewriteRule ^([^/]+) index.php?action=$1
それでも予期しない動作をする場合は、既存のディレクトリを書き換えていないことを確認して、これを試してください:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^login/
RewriteRule ^([^/]+) index.php?action=$1
?
また、ルックアップを使用しているため、投稿されたサンプルコードで最初のスラッシュ (おそらく) までしかキャプチャしていないことに気付きました。そのため、以前のレイアウトでは、そのコードを少し短く表示しています。URI全体をキャプチャするには、次のようにします。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^login/
RewriteRule ^(.*) index.php?action=$1
2 番目 (および 3 番目) の文字列をキャプチャするには、次のようにします。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^login/
RewriteRule ^([^/]+)/([^/]+)/([^/]+) index.php?action=$1&page=$2&response=$3