Переписать .htaccess в подкаталог - PullRequest
0 голосов
/ 01 января 2019

В настоящее время я развертываю несколько сайтов с одной учетной записи хостинга.У меня все сайты в отдельной папке, включая основной домен.Проблема, с которой я сталкиваюсь, заключается в том, что когда я переписываю адрес первичных доменов в моем текущем коде, он включает в себя подкаталог.Поэтому в настоящее время, если я набираю http://www.example.com/url, он переписывается на https://example.com/folder/url.Я просто хочу переписать без папки.

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

В моем файле public_html .htaccess:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
RewriteCond %{REQUEST_URI} !^/folder/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /folder/$1 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
RewriteRule ^(/)?$ folder/index.php [L]

и в public_html/folder .htaccess:

RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

@ MrWhite: устранение неполадок и очистка кэша сервера решили проблему.Спасибо за вашу помощь.

0 голосов
/ 01 января 2019

Так что в настоящее время, если я наберу http://www.site.whatever/url, он переписывает в https://site.whatever/folder/url.

Это «перенаправление», а не перезапись.

Это происходит из-за использования серверной переменной REQUEST_URI в вашем перенаправлении HTTP на HTTPS в вашем файле public_html/folder .htaccess:

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

Серверная переменная REQUEST_URI содержит полный URL-путь запроса, который к моменту вызова файла .htaccess подкаталога был обновлен и теперь содержит /folder.

. Вам необходимо:

  • Переместите ваш канонический www на не-www и перенаправления HTTP на HTTPS в файл .htaccess в корне документа.(Это предпочтительнее, если в вашем файле public_html/folder .htaccess нет других директив mod_rewrite.)

ИЛИ,

  • Измените указанную выше директивуиспользовать обратную ссылку $1 (к захваченному шаблону RewriteRule ), как вы делали в предыдущем перенаправлении с www на non-www.Например:

    RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
    

    (Обратите внимание, что в конечном итоге это должно быть перенаправление 301, как только вы подтвердите, что оно работает нормально.)

И не забудьтеэкранировать буквальные точки в регулярном выражении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...