Я вижу два основных подхода:
1. Более безопасный / простой для понимания и расширяемый при необходимости. Создайте два правила : 1-й поймает thanks=stackoverflow
, а 2-й будет работать только с thanks
:
RewriteEngine On
# do not do anything for already existing files
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .+ - [L]
# will work with /thanks=stackoverflow
RewriteRule ^([^/=]+)=([^/=]+)/?$ index.php?a=$1&b=$2 [L]
# will work with /thanks
RewriteRule ^([^/=]+)/?$ index.php?a=$1 [L]
2 . Объедините эти два правила в одно правило . В этом случае параметр b=
всегда будет присутствовать, но будет пустым для сценария thanks
:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/=]+)(=([^/=]+))?/?$ index.php?a=$1&b=$3 [L]
Проверено оба - отлично работает на моем Apache box.