У меня есть серия сайтов, каждый из которых находится в двух местах: 1) среда разработки, 2) среда производства. Они структурированы немного по-разному.
В среде разработчика: www.devdomain.com/sitename/
В производственной среде: www.productiondomain.com/
Цель состоит в том, чтобы .htaccess обрабатывал несуществующие пути, чтобы при отсутствии пути сайт перенаправлялся на root и передавал пропущенный путь как переменную среды.
Так что-то вдоль этих линий ...
RewriteEngine On
#The following is necessary to for the final line to process correctly on the dev domain but causes problems on the production domain.
RewriteBase /sitename/
#Capture the intended path in an environment variable
RewriteRule ^ - [E=REQUEST_URI:%{REQUEST_URI}]
#redirect non-existant path
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ \#$1 [L,R=301,NE]
Выше не работает по ряду причин
1 - Кажется, что первая строка не отражает предполагаемый путь, а скорее путь как записывается последней строкой
2 - последний путь (в настоящее время) переписывает несуществующую часть пути как ха sh (что здорово, но я бы предпочел несуществующую путь передан как переменная среды)
3 - RewriteBase работает в домене dev, но не в рабочем домене.
———
Я попытался повторно сделать последняя строка как RewriteRule %{SERVER_NAME}
, но для несуществующих путей я получаю ошибку: «Требуется sted URL не найден на этом сервере ".
Дополнительный вопрос:" $ 1 "в последней строке выглядит как захват группы регулярных выражений. Это верно? Как оно наследует свою ценность?