php mod_rewrite не может получить второй параметр из rewritecond - PullRequest
0 голосов
/ 23 сентября 2011

У меня есть сервер, который я настраиваю для перезаписи поддоменов в качестве параметров получения

Итак, subdomain.example.com / блог / тест на самом деле будет указывать на: example.com / index.php? Сайт = подобласть & запрос = блог / тест

Я настроил домен с записью A со значением *, и я настроил сервер на ALIAS * .example.com на example.com. Все это работает.

В моем .htaccess у меня есть

RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteCond %{HTTP_HOST} ^([^/\.]+).example.com(.*)$ [NC]
RewriteRule ^(.*)$ index.php?website=%1&request=%2 [L]

Вот var_dump () $ _GET, когда я иду на subdomain.example.com/blog/test

array(2) { ["website"]=> string(8) "subdomain" ["request"]=> string(0) "" } 

субдомен прекрасно входит в параметр веб-сайта, но остальная часть запроса отсутствует в параметре запроса. Есть идеи? Я очень ценю помощь. Заранее спасибо.

Кстати, если я использую

RewriteRule ^(.*)$ index.php?website=%1&request=$1 [L]

Затем я получаю index.php в параметре запроса. Если это говорит вам о чем-то дополнительном.

ПОПРАВКИ

По предложению Джона я попробовал следующее

RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteCond %{HTTP_HOST} ^([^/\.]+).wescms.com(.*) [NC]
RewriteRule ^(.*)$ index.php?website=%1&request=%{REQUEST_URI} [NC,L]

Если вы зайдете на subdomain.example.com / blog / test , REQUEST_URI вернется с index.php Я сделал var_dump () переменной $ _SERVER, и в REQUEST_URI он показывает / blog / test, но он не проходит через RewriteRule.

Если я использую THE_REQUEST в правиле перезаписи, а не REQUEST_URI, я получаю обратно то, что мне нужно, плюс некоторые дополнительные биты, но я был бы признателен за понимание того, почему REQUEST_URI не работает, как в моем последнем примере. Благодарю.

1 Ответ

1 голос
/ 23 сентября 2011

Ваш второй RewriteCond совпадает с %{HTTP_HOST}, который включает только имя хоста запроса, а не часть "path".

Запрошенный ресурсчасть URL после имени хоста) доступна как переменная %{REQUEST_URI}.В вашей ситуации вы можете использовать переменную непосредственно в вашем правиле, вместо того, чтобы пытаться захватить эти данные в RewriteCond.

...