2010-09-02 1 views
0

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

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

Например: foo.example. ком/бар становится: 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. Благодаря!

+0

'RewriteRule^(. *) $ Http://public.example.com/foo/$1 [L]' всегда должен вызывать внешнее перенаправление, но вы говорите, что если вы включаете конечную косую черту в URL-адрес , это не так? –

+0

Привет Тим! Ах, я вставил неправильный код. Он должен быть [P] не [L] - правильная страница отображается без косой черты, но она перенаправляется в адресной строке. С косой чертой все идеально! –

ответ

0

Уф, после того, как немного играть вокруг я, кажется, получили его работы:

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

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

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

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

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

Спасибо Gumbo, к сожалению, я получаю ошибку сервера 500 с этой строкой. Попробовал это в нескольких местах и ​​без радости :(Спасибо за вашу помощь! –

+0

@ Andy Smart: И что говорит файл журнала ошибок? – Gumbo

+0

Журнал ошибок: запрос превысил предел 10 внутренних переадресаций из-за вероятной конфигурации ошибка. –

Смежные вопросы