.htaccess mod_rewrite с окончательной косой чертой

#.htaccess #mod-rewrite

#.htaccess #перезапись мода

Вопрос:

Мой файл .htaccess выглядит следующим образом:

 RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/$ ?action=$1 [QSA,L]
  

Все работает нормально, если я заканчиваю все свои URL на / . Например http://localhost/test/test2/test3/ .
Но если я забуду поставить / в конце, я получу ошибку not found… Я пытался настроить это правило перезаписи, но не могу заставить его работать в обоих направлениях (с final / и без него).

Есть идеи?

Ответ №1:

Сделайте это необязательным с помощью ? оператора:

 RewriteRule ^(.*)/?$ foo.php?action=$1 [QSA,L] 
  

… или просто удалите полностью, поскольку вам, похоже, это вообще не нужно:

 RewriteRule ^(.*)$ foo.php?action=$1 [QSA,L] 
  

… или даже:

 RewriteRule ^ foo.php?action=$0 [QSA,L]