Это должно сделать:
# Assuming that "RewriteEngine On" has already been called
RewriteCond %{QUERY_STRING} ^(.*&)?go=([a-z]+)\.php(&.*)?$
RewriteRule page.php %2?
Что здесь происходит? Во-первых, RewriteCond соответствует строке запроса, содержащей go=something.php
, где «что-то» захватывается ([a-z]+)
. Затем RewriteRule использует содержимое второй группы захвата из RewriteCond, содержащее «something.php». Значок вопроса в конце концов избавляется от исходной строки запроса.
Примечание: если вы хотите сохранить остальную часть строки запроса, исключая параметр go=...
, все становится немного сложнее.
Дополнительную информацию см. В документах от http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html.
Недостаток использования этого, 'page.php? Something & go = login.php' не работает, и он по-прежнему действует на' page.php? Go = login.phpjunk' – Lekensteyn
google для правильного синтаксиса и как обойти эти проблемы. , например. добавить $ после login.php, чтобы предотвратить запуск login.phpjunk – JohnSmith