Форсирование косой черты в URL после перезаписи субдомена - PullRequest
0 голосов
/ 02 сентября 2010

Я перезаписываю поддомен в «папку» - на самом деле это страница в WordPress, и все это, кажется, работает правильно. Я не хочу, чтобы адрес в строке URL изменился.

Все работает нормально, если пользователь не ставит косую черту после имени страницы, тогда страница по-прежнему перенаправляется на правильный URL, но URL в адресной строке изменяется

Например: foo.example.com/bar Становится: public.example.com/foo/bar

Где: foo.example.com/bar/ находится по правильному URL в адресной строке, но показывает перенаправленную страницу (это правильно)

Какое правило мне нужно добавить, чтобы добавить в конце косую черту, если оно не отправлено?

Код, который у меня пока есть:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

Options +FollowSymlinks

RewriteCond %{HTTP_HOST} ^foo\.example\.com$ [NC]
RewriteRule ^(.*)$ http://public.example.com/foo/$1 [P]

# rules for WordPress ...

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

#####

</IfModule>

Любая помощь была бы фантастической, я довольно новичок в htaccess. Спасибо!

Ответы [ 2 ]

0 голосов
/ 03 сентября 2010

Фу, после небольшой игры у меня, кажется, все заработало:

RewriteCond %{HTTP_HOST} ^foo\.example\.com$ [NC]
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://foo.example.com/$1/ [L,R=301]

RewriteCond %{HTTP_HOST} ^foo\.example\.com$ [NC]
RewriteRule ^(.*)$ http://public.example.com/foo/$1 [P]

По сути, первый блок добавляет косую черту в URL, если его нет на первом месте, товторой блок выполняет перенаправление прокси для URL.

Насколько я вижу, это ловит все случаи, но дайте мне знать, если есть какие-либо зияющие дыры!

0 голосов
/ 03 сентября 2010

Это правило должно делать это:

RewriteRule .*[^/]$ %{REQUEST_URI}/

Поместите это правило перед другими вашими правилами.Вы также можете добавить условие для исключения существующих файлов:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .*[^/]$ %{REQUEST_URI}/
...