Вы проверяли, что вы на самом деле не получаете param? Для меня этот параметр не отображается в URL, но он действительно прошел.
Я просто использовал это:
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)$ ip.php?q=$1 [QSA]
И попробовал это поверх ip. php:
<?php
if(isset($_GET['q'])) {
echo "PASSED: ".$_GET['q'];
}
?>
В этом случае, когда я посещаю
mypage.com/SOMETHING
кажется, что он остается там, но $ _GET параметр 'q' установлен на что-то. Без вышеуказанных правил перезаписи вы получите 500 внутренних ошибок.
Также проверьте правила вашего сервера mod_rewrite et c. для определенных особенностей.