Мой основной домен привязан к моей папке public_html, но я использую перенаправление .htaccess для изменения корневого каталога в подкаталог в папке, чтобы было проще размещать несколько сайтов. Пример:.htaccess перенаправить подкаталог в корневую проблему
public_html
-- .htaccess
-- site1
---- .htaccess
-- site2
-- site3
файл .htaccess в корневом каталоге выглядит следующим образом:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/subdirectory/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subdirectory/$1
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ subdirectory/ [L]
Это прекрасно работает, но я думаю, что есть проблемы с этим, и файл .htaccess в моем site1 каталоге. Если я ввожу URL, он иногда перенаправляется на example.com/site1. Таким образом, веб-сайт отображается точно так же на example.com и example.com/site1, но я не хочу, чтобы он отображался как example.com/site1. Второй файл .htaccess внутри каталога site1 показан ниже.
RewriteEngine on
# Change default directory page
DirectoryIndex /home/
# Remove .php extension
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php
RewriteRule (.*)\.php$ /$1/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/(.+)/$
RewriteCond %{DOCUMENT_ROOT}/%1.php -f
RewriteRule ^(.*)/$ $1.php [L]
# Ensure all directory URLs have a trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{REQUEST_URI} !\/[^\/]*\.[^\/]+$
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI}/ [L,R=301]
# Same for HTTPS
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{REQUEST_URI} !\/[^\/]*\.[^\/]+$
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI}/ [L,R=301]
# Redirect default error page to home page
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(/|error/)?$ /home/ [R=301,L]
# Error Documents
ErrorDocument 400 /error/?e=400
ErrorDocument 401 /error/?e=401
ErrorDocument 403 /error/?e=403
ErrorDocument 404 /error/?e=404
ErrorDocument 500 /error/?e=500
# Prevent viewing of htaccess file
<Files .htaccess>
order allow,deny
deny from all
</Files>
Я не уверен, если это проблема с различными правилами перезаписи, которые я использую, что влияет на URL, но я был бы признателен за любую помощь, если она может быть решена.
Заранее спасибо, и я прошу прощения, если мое описание не очень велико.
Спасибо за ваш ответ! Если ваши изменения включены, если я нахожусь в URL example.com/home и целенаправленно опускаю конечную косую черту, вместо перенаправления, чтобы включить трейлинг-косую черту, сайт не загружается из-за слишком большого количества перенаправлений! Это может быть полезно, чтобы добавить меня поддиректорию внутри папки site1 для сайта активов с помощью файла .htaccess, содержащий: 'Опции -Indexes RewriteEngine На RewriteBase/ # Disallow доступа каталога IndexIgnore *' и проблема возникает главным образом при отсутствии конечной косой черты в папке с ресурсами. – JakeGriffin
К сожалению, в первом блоке добавлен трейлинг-косая черта. –
Спасибо, Василий, что работает на страницах в главном каталоге! Однако, я сказал выше, у меня есть подкаталог ресурсов с доступом к блокировке файлов .htaccess. Если я перейду к example.com/assets/, он отлично работает, но если я опускаю конечную косую черту, она перенаправляется на example.com/site1/assets/. Как это можно решить? – JakeGriffin