Правила перезаписи обрабатываются в том порядке, в котором они встречаются. В этом случае каждый запрос передается на index.php
до того, как встретится ваше правило software
(при условии, что software
не существует в системе как каталог или файл). [L]
в конце первого правила указывает Apache прекратить чтение правил, поэтому он даже не обрабатывает следующее.
Попробуйте это:
RewriteEngine On
RewriteBase /
RewriteRule ^software wp-content/themes/dir/software.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]