Фон:
- Запуск Apache 2.4 на Centos7
- Мои правила перезаписи и перенаправления находятся в файле .htaccess в корневом каталоге веб-сайта
- Сейчас Multiviews установлен на +, но попробовал оба + и -.
Что я пытаюсь сделать:
Я хотел бысделать что-то, как объяснено здесь 1018 *, которое удаляет расширения файлов и заменяет их косой чертой в URL браузера. В этом случае .php и .html.
Но когда я ввожу код, приведенный ниже, я не получаю желаемый результат.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
RewriteEngine On уже установлен, а это не такпервым делом на моем .htacess - должно ли это быть? Вот верхняя часть моего файла корневого каталога .htaccess. У меня есть Multiviews и другие вещи, такие как индексы, установленные на уровне конфигурации (httpd.conf).
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
#redirects all www to non www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
#redirect index.php and index.html to / via https://www.smartlabsoftware.com/howto/redirect-index-page.htm
#
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*index\.(html|php)?\ HTTP/
RewriteRule ^(.*)index\.(html|php)?$ https://mywebsite.com/$1 [R=301,L]
#this code does not work and breaks rewrite rules below it
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
##
Проблемы Я столкнусь, если я включу блок кода, который я перечислилво-первых:
- что-то с множественными представлениями, где index.php для / перезаписи больше не работает.
- без добавленной косой черты
- расширение .php никогда не исчезает
- другие правила переписывания ниже в моем файле перестают работать.
Что мне нужно сделать:
.php или .html, чтобы бытьудален и для добавления косой черты. Например:
- mywebsite.com / contact / staff.php, если требуется, следует загрузить как mywebsite.com/contact/staff/
- mywebsite.com / contact / staff, еслизапрашиваемый должен загружаться как mywebsite.com/contact/staff/
- mywebsite.com / contact / index.php, если запрашивается, должен загружать mywebsite.com/contact/
- Для работы правил перезаписиНапример,
RewriteRule ^elderlaw/?$ radio/minute-type.php?id=3 [R=301,NC,L]
Дополнительная проблема
Даже если я не пытаюсь добавить блок кода выше, мои RewriteRules работают, только если я этого не сделаювключите флаги в скобки []. Так что мой RewriteRule на самом деле выглядит следующим образом
RewriteRule ^elderlaw/?$ radio/minute-type.php?id=3
Если я включу флаги, он просто перенаправляет на мою веб-страницу вместо перезаписи URL.
Да, я перезапускаю apache каждый раз, да, яочищаю кеш браузера каждый раз при тестировании. У меня включен mod_rewrite, и мой RewriteEngine включен.
Есть идеи? Я перепробовал так много вещей.