Попытайтесь создать каталог в папке вашего субдомена с индексом в нем, а затем попытайтесь найти этот путь. Вы увидите, что URL переписан безобразно упомянутым способом "appname.domain.com/appname/somefolder"
Звучит так, как будто Directory_lir mod_dir мешает. Когда DirectorySlash включен, если mod_dir видит, что для каталога сделан запрос и отсутствует косая черта, перенаправляет браузер на эквивалентный URL-адрес, чтобы включить косую черту.
Что-то, что вы можете сделать, это включить DirectorySlash off
, но есть проблема раскрытия, когда дело доходит до DirectoryIndex'ing (см. Запись DirectorySlash в mod_dir). Вы можете попытаться добавить некоторые правила, чтобы сделать это перенаправление для вас, но убедитесь, что перенаправление без бита /appname/
в URL:
RewriteCond %{HTTP_HOST} appname.domain.com
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^appname/(.+)$ http://appname.domain.com/$1/ [R=301,L]
Это в основном проверяет, является ли запрос для хоста appname.domain.com
, что запрошенный объект является каталогом, что запрос не заканчивается завершающей косой чертой, и если запрос уже был переписан для /appname/
перенаправить браузер на тот же URL-адрес (без имени приложения), но с косой чертой. После перенаправления первое правило, которое у вас есть, будет внутренне переписывать URI для включения / appname /, но, поскольку запрос теперь заканчивается косой чертой, mod_dir должен его игнорировать.