2012-07-02 2 views
0

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

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

Они оба HTML-файлы, так что добавление .html ко второму будет заставить его работать. Только тогда, когда расширение html будет удалено (это то, что я хочу сказать), возникает проблема с перенаправлением.

Я думаю, что проблема заключается в том, что «подкаст» является и папкой, и файлом html. Другими словами, есть папка под названием «подкаст», а также файл под названием podcast.html, расширение которого автоматически удаляется (это было моим намерением).

Итак, как я могу исправить эту проблему с перенаправлением? Я хотел бы, чтобы в папке и html все еще были одинаковые имена, а расширение html было удалено, как сейчас.

Вот копия моего файла .htaccess (редактирование: добавлены L флаги)

RewriteEngine On 
RewriteBase/

#removing trailing slash 

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

#non www to www 

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

#shtml 

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

#html 

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] 

Довольно уверен, что RewriteRule, относящиеся к% {REQUEST_FILENAME} -f вызывает вопрос!. Цикл не возникает для ошибки 404.

Идеи?

+0

Оба предоставленных вами URL-адреса почти одинаковы, кроме того, что у первого есть дополнительные «s» в конце. Это опечатка? – brezanac

+0

Что такое URL-адрес ввода и каковы URL-адреса, на которые вы перенаправлены? (См. Инспектор сети в Chrome/Firebug) –

+0

@holodoc Нет, это не опечатка. Идея заключается в том, что «подкаст» - это папка и html-файл, поэтому он не работает, а «подкасты» - это только html-файл, поэтому он не имеет проблем с перенаправлением. – Jeremy

ответ

1

Попробуйте разместить это в разделе HTML.

RewriteCond %{REQUEST_FILENAME} !-d 

Ваш -f флаг предотвратит файлы из рассматриваемых в правиле, но это исключает каталоги.

+0

Пробовал, но не помог ... – Jeremy

+0

Добавьте, что RewriteCond в ваш конец. Вероятно, это вмешательство, потому что сервер пытается преобразовать имя каталога в путь к каталогу (это означает, что он добавляет конечную косую черту, затем вы удаляете ее, затем она добавляет ее, затем вы удаляете ее снова). – Will

+0

Это сработало. Спасибо за вашу помощь. Кроме ... он не показывает страницу podcast.html, он показывает исходный индекс папки ... – Jeremy

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