htaccess Silent Redirect to Subdirectory: Подкаталог показывает, когда нет следа '/'

Я копался в поисках Google и StackOverflow, пытаясь разобраться в своей проблеме, пробуя бесчисленное количество решений, но ничего не помогло полностью.

Я хочу переместить корневой каталог основного домена на моем сервере в подкаталог. То, что у меня есть в настоящее время для пути к моему корневому веб-серверу:

/home/user/public_html/MyWebFilesHere

То, что я ищу:

/home/user/public_html/subdir/MyWebfilesHere

Когда я перехожу на mydomain.com, не должно быть видимой разницы (т.е. "subdir" не виден после перенаправить).

К сожалению, я ограничен этим только с файлом .htaccess, так как я использую общий хостинг и не имею доступа к файлам конфигурации Apache и т.п. : (

То, что у меня сейчас в папке.htaccess в public_html:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$
RewriteCond %{REQUEST_URI} !^/subdir/
RewriteRule ^(.*)$ /subdir/$1 [L]

Это успешно перенаправляет все запросы в подкаталог, однако есть действительно странная проблема. Если я перейду к

mydomain.com/Contact/

, он будет отлично работать, перенаправив запрос на путь / подкаталог / Контакт /, но оставив адресную строку в покое. Если я перейду к

mydomain.com/Contact

(обратите внимание на отсутствие завершающего символа '/'), то в адресной строке отображается

mydomain.com/subdir/Contact/

, что мне не нужно, поскольку отображается «subdir».

В качестве рабочего примера на моем настоящем сайте попробуйте просмотреть

colincwilliams.com/Contact/

по сравнению с

colincwilliams.com/Contact

. У вас есть какие-нибудь идеи, как заставить эту работу работать незаметно, как с косой чертой в конце, так и без нее?

5
задан Jon Lin 19 June 2012 в 01:21
поделиться