2009-04-23 3 views
4

Я хотел бы перенаправить.htaccess переписать без WWW и перенаправление в подкаталог

  • www.example.com/* в example.com/*

И в то же время перенаправлять

  • example.com/* к example.com/forum/*

Но я также /wiki/ и /blog/ и /style/, поэтому я не хочу перенаправлять

  • example.com/style/* в example.com/forum/style/*

Это то, что у меня есть на данный момент, который не работает совершенно правильно:

Options +FollowSymLinks 
RewriteEngine On 

RewriteBase/

RewriteCond %{HTTP_HOST} !^example\.com$ [NC] 
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^/forum/ 
RewriteRule ^(.*)$ forum/$1 [R=301,L] 

Уточнение: вопрос можно задать проще.

Я хотел бы перенаправить пустой REQUEST_URI или / или несуществующий файл, только если он находится в корневом каталоге к /форум/.

+0

Это то, что у меня есть на данный момент, который не работает совершенно правильно: (. *) Опции + FollowSymLinks RewriteEngine На RewriteBase/ RewriteCond% {}^HTTP_HOST пример \ $ .com [NC] RewriteRule^$ ч TTP:!! //example.com/$1 [R = 301, L] RewriteCond% {REQUEST_FILENAME} -f RewriteCond% {REQUEST_FILENAME} -d RewriteCond% {REQUEST_URI} ^/форум/ RewriteRule^(. *) $ forum/$ 1 [R = 301, L] – 2009-04-23 15:02:56

+0

На это никогда не отвечали. Вы когда-нибудь находили способ перенаправления на форум, не заканчивая на www.example.com, а не просто пример.ком? –

ответ

0

Я бы сказал, что это должно сработать.

RewriteEngine on 
RewriteRule ^forum/(.*)$ forum/$1 [L] 
RewriteRule ^wiki/(.*)$ wiki/$1 [L] 
RewriteRule ^blog/(.*)$ blog/$1 [L] 
RewriteRule ^style/(.*)$ style/$1 [L] 

RewriteRule ^(.*)$ forum/$1 [L] 

RewriteCond %{HTTP_HOST} ^www.example\.com$ 
RewriteRule ^(.*)$ http://example.com/$1 
2

Попробуйте это:

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^example\.com 
RewriteRule ^(.*)$ http://example.com/$1 [R=301,QSA,L] 

RewriteCond %{REQUEST_URI} !^/(wiki|blog|style|forum) 
RewriteRule ^(.*)$ http://www.example.com/forum/$1 [R=301,QSA,L] 
+0

нет пути без указания всех подкаталогов? У меня в настоящее время только 4, но, вероятно, будет более поздно ... Спасибо за ваш ответ! – 2009-04-23 15:18:55

1

Я хотел бы использовать эти правила:

# redirect www.example.com to example.com 
RewriteCond %{HTTP_HOST} ^www\.example\.com$ 
RewriteRule^http://example.com%{REQUEST_URI} [L,R=301] 

# prefix everything but /forum/, /wiki/, /blog/, /style/ with /forum/ and rediret to it 
RewriteRule !^(forum|wiki|blog|style)/ /forum%{REQUEST_URI} [L,R=301] 

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

# check if first segment of requested URI path is either missing 
RewriteCond $0 ^$ [OR] 
# or cannot be mapped to an existing directory 
RewriteCond %{DOCUMENT_ROOT}$0/ !-d 
RewriteRule ^[^/]* /forum%{REQUEST_URI} [L,R=301] 
0

У меня нет ответа на все, но для вашего WWW/нет WWW проблема, которую вы не могли бы попробовать это:

# Enforce www 
# If you have subdomains, you can add them to 
# the list using the "|" (OR) regex operator 
RewriteCond %{HTTP_HOST} !^(www|subdomain) [NC] 
RewriteRule ^(.*)$ /exemple/$1 [L,R=301] 

# Enforce NO www 
RewriteCond %{HTTP_HOST} ^www [NC] 
RewriteRule ^(.*)$ http://exemple.com/$1 [L,R=301] 
Смежные вопросы