2012-06-30 4 views
1

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

http://www.example.com/podcast/episode1
http://www.example.com/podcast/episode1/

Есть ли способ, чтобы перенаправить все завершающие версии слэш с не-сцепных версии слэш?

Проблема еще хуже, здесь, так как ни одна из этих работ:

example.com/podcast
example.com/podcast/

Только это работает:

example.com /podcast.html

и я не хочу, чтобы расширение html было видимым.

Вот код, у меня в файле .htaccess до сих пор:

#shtml 

AddType text/html .html 
AddHandler server-parsed .html 

#html 

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.html [NC,L] 

#index redirect 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/ 
RewriteRule ^index\.html$ http://example.com/ [R=301,L] 

#non www to www 

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

Можете ли вы мне помочь?

+0

Также хотел бы перевести html-версию на версию, отличную от html. Например, я хочу http://www.pavlinaplus.com/podcast/reality.html перенаправить на http://www.pavlinaplus.com/podcast/reality – Jeremy

ответ

4

Снятие косых черт легко. Снятие .html - нет.

Удаление слэш

Просто R = 301 перенаправления, если вы видите слэш там.

RewriteRule ^(.*)/$ $1 [R=301]

Не добавляйте L флаг, так как вы хотите, чтобы продолжить обработку этого запроса. Также сделайте это первым правилом.

Почему вы не можете удалить .html

Ваш вопрос в том, что когда-то page становится page.html (через внутренний редирект), новый запрос page.html а дается на сервер. Итак, ваш .htaccess увидит запрос для page.html и перенаправит на page. Бесконечный цикл.

Оптимизация кода

  1. Вам нужно только RewriteEngine On один раз в верхней части вашего .htaccess
  2. Вы должны добавить www перенаправить к верхней части кода и удалите L флаг (см Отсоединение Slash)
+0

Привет, Скот, спасибо за вашу помощь. Код частично работает, а частично нет. Посетите [конечную косую черту] (http://www.pavlinaplus.com/newsletter/checklist/), чтобы узнать, что происходит ([не привязанная косой чертой версия] (http://www.pavlinaplus.com/newsletter/checklist) до сих пор работает).Любая идея, что может привести к тому, что он займет длинный маршрут? – Jeremy

+0

Я также оптимизировал код, как указано. – Jeremy

+0

Как мне избавиться от _home/theev8/public_html/_ части URL? – Jeremy

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