Назад | Перейти на главную страницу

.htaccess Переписать: внутренне он должен быть / mypage, но в URL-адресе выглядит как / Home / mypage

Я, наверное, совершенно не прав:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule .* index.php [L]
#Rewrites so it looks like production
RewriteCond %{REQUEST_URI} !^/Home/
RewriteRule ^(.*)$ /Home/$1 [L]

Может ли кто-нибудь настроить меня, чтобы сделать все URL-адреса http: // site / somepage1 , http: // сайт / somepage2, можно переписать как http: // сайт / Главная / somepage1, http: // сайт / Главная / somepage2. Есть ли одно правило, которое захватило бы все эти URL-адреса и добавило бы «/ Home» ко всем URL-адресам?

Заранее спасибо.

Обновить

При входе в httpd.conf и установке LogLevel = debug выяснилось, что эти два правила конфликтуют:

[Fri Sep 23 10:54:07 2011] [debug] core.c(3065): [client 127.0.0.1] r->uri = /Home/index.php
[Fri Sep 23 10:54:07 2011] [debug] core.c(3071): [client 127.0.0.1] redirected from r->uri = /index.php
[Fri Sep 23 10:54:07 2011] [debug] core.c(3071): [client 127.0.0.1] redirected from r->uri = /Home/index.php
[Fri Sep 23 10:54:07 2011] [debug] core.c(3071): [client 127.0.0.1] redirected from r->uri = /index.php
[Fri Sep 23 10:54:07 2011] [debug] core.c(3071): [client 127.0.0.1] redirected from r->uri = /Home/index.php
[Fri Sep 23 10:54:07 2011] [debug] core.c(3071): [client 127.0.0.1] redirected from r->uri = /index.php
[Fri Sep 23 10:54:07 2011] [debug] core.c(3071): [client 127.0.0.1] redirected from r->uri = /Home/index.php
[Fri Sep 23 10:54:07 2011] [debug] core.c(3071): [client 127.0.0.1] redirected from r->uri = /index.php
[Fri Sep 23 10:54:07 2011] [debug] core.c(3071): [client 127.0.0.1] redirected from r->uri = /Home/index.php
[Fri Sep 23 10:54:07 2011] [debug] core.c(3071): [client 127.0.0.1] redirected from r->uri = /index.php
[Fri Sep 23 10:54:07 2011] [debug] core.c(3071): [client 127.0.0.1] redirected from r->uri = /Home

Есть ли способ объединить эти два правила перезаписи без этой ошибки перенаправления?

Вот так просто:

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/Home/
RewriteRule ^(.*)$ /Home/$1 [L]

Очевидно, если вы запрашиваете URL с /Home/ в нем напрямую (например, http://site/Home/somepage1, он не будет переписан на /Home/Home/somepage1 - так что имейте это в виду, если у вас есть подпапка с таким же именем, что и основная папка.


ОБНОВИТЬ: Учитывая новую информацию, попробуем такой подход:

Options +FollowSymLinks
RewriteEngine On

# rewrite incoming link to /Home/
# but only if it's a non-existing file
RewriteCond %{REQUEST_URI} !^/(Home/|index\.php)
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)$ /Home/$1 [L]

# route all requests for non-existing resources to /index.php
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule .* index.php [L]