.htaccess, чтобы сделать подпапку главной папкой для основного домена, но получая избыточные перенаправления, когда URL набирается прямо в браузере - PullRequest
2 голосов
/ 15 декабря 2011

Проблема:

Я использую .htaccess, чтобы сделать подпапку главной папкой для моего основного домена.Кажется, все работает нормально, за исключением того, что я заметил, что когда я набираю URL-адрес напрямую, такой как «primarydomain.com/blog/», он перенаправляет на «http://primarydomain.com/primarydomain.com/blog/".

Подробности:

В настоящее время у меня есть несколько доменов под одной учетной записью веб-хостинга. Этот веб-хост изначально организовал мои файлы как:

  • public_html / для всех веб-файлов для моего основного доменного имени (primarydomain.com)
  • public_html / domain2.com / для всех веб-файлов для одного из моих других доменов
  • public_html / domain3.com / для всех веб-файлов для другого одного из моих доменов

Используя .htaccess и RewriteRule, я смог реорганизовать свои файлы для спокойствия в:

  • public_html / primarydomain.com /
  • public_html / domain2.com /
  • public_html / domain3.com /

... с указанным файлом .htaccess в этом корневом каталоге:

  • public_html / .htaccess

Этот файл .htaccess имеет следующий вид:

<IfModule mod_rewrite.c>

RewriteEngine On

# Change yourdomain.com to be your main domain.
RewriteCond %{HTTP_HOST} ^(www.)?primarydomain.com$

# Change 'subdirectory' to be the directory you will use for your main domain.
RewriteCond %{REQUEST_URI} !^/primarydomain.com/

# Don't change this line.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Change 'subdirectory' to be the directory you will use for your main domain.
RewriteRule ^(.*)$ /primarydomain.com/$1

# Change yourdomain.com to be your main domain again.
# Change 'subdirectory' to be the directory you will use for your main domain
# followed by / then the main file for your site, index.php, index.html, etc.
RewriteCond %{HTTP_HOST} ^(www.)?primarydomain.com$
RewriteRule ^(/)?$ primarydomain.com/ [L]

# this last line I commented out because it was causing all the links (direct links) to all my files to hit 404 errors
# I have included this line as a reference because it was in the original tutorial I used
# RewriteRule ^(.*)(/)?$ primarydomain.com/$1 [L]

</IfModule>

TУчебное пособие, которое я использовал: http://support.lunarpages.com/knowledge_bases/article/549 (я не использую лунные полоски, но структура та же)

Я не уверен, что делаю неправильно.Любые советы / подсказки будут наиболее цениться.Спасибо!

Ответы [ 2 ]

1 голос
/ 16 декабря 2011

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

RewriteEngine on
RewriteBase /

#if the host is on primarydomain.com or www.primarydomain.com
RewriteCond %{HTTP_HOST} ^(www\.)?primarydomain\.com$ [NC]
#and URI does not already start with /primarydomain.com/
RewriteCond %{REQUEST_URI} !^/primarydomain.com/ [NC]
# And not for an existing file or directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#then rewrite all requests that to primarydomain.com/ folder
RewriteRule (.*) primarydomain.com/$1 [L]
0 голосов
/ 16 декабря 2011

Если это проблема с отсутствующей косой чертой, вы можете попробовать включить DirectorySlash Off, автоматическое перенаправление mod_dir, если отсутствует косая черта для каталогов. Иногда это мешает mod_rewrite. Просто обратите внимание, что при выключении .

возможны проблемы безопасности.
...