2016-12-06 2 views
0

У меня вопрос о перенаправлении Apache. См. Мой сценарий ниже.Apache redirect для строки запроса

У меня есть адрес sub.example.com, который необходимо перенаправить на адрес www.example.com/index.php?r=something. Когда я загружаю www.example.com/index.php?r=something в свой браузер, файл css загружается с www.example.com/css/file.css. Поэтому я не мог написать простую переадресацию для sub.example.com в www.example.com/index.php?r=something, так как это приведет к 404 для файла css. Я исправил эти проблемы, применив приведенное ниже правило переадресации, и он отлично работает (значит, также загружается файл css).

RewriteEngine On 
RewriteRule ^(.+/?)?(/|\.htm|\.php|\.html|/[^.]*)$ http://www.example.com/index.php?r=something [P] 

Моя проблема теперь, когда я ставлю sub.example.com/?success=1 он должен перенаправить www.example.com/index.php?r=something&success=1. Соответствует ли это вышеприведенное правило? Если нет, можете ли вы, пожалуйста, помочь изменить правило. Заранее спасибо.

ответ

0

После некоторых поисковых запросов я нашел решение этого вопроса. Существует флаг QSA (Query String Append), который заставит механизм перезаписи добавить строку строки запроса строки замены в существующую строку. Поэтому мне пришлось добавить этот флаг в существующее правило Rewrite, как показано ниже.

RewriteRule ^(.+/?)?(/|\.htm|\.php|\.html|/[^.]*)$ http://www.example.com/index.php?r=something [P,QSA] 

И вуаля проблема решена.

Thanks,