Переписать секунду не совпадая?


Я прочитал несколько сообщений о переписывании url, но ничего, что помогло бы мне.

В основном на сайте у нас есть страницы, заканчивающиеся на ".html " (http://www.domain.com/page.html), и мы также храним некоторые другие поддомены.(http://www.domain.com/subdomain.com)

Итак, я пытаюсь получить это: http://www.domain.com/subdomain.com перенаправление на: /www/subdomain.com/index.php

Я пробовал это, но там что-то не так:

RewriteCond %{QUERY_STRING} !.html$
RewriteCond %{QUERY_STRING} ^([^/.]+).([^/.]+)/?$
RewriteRule /www/%1.%2/index.php [L]

Я думаю, что неправильно понимаю использование RewriteCond, но я не могу понять, как это сделать правильно. Чего мне не хватает?

Спасибо, Роб

1 2

1 ответ:

Это должно быть близко к:

RewriteCond %{QUERY_STRING} !\.html$
RewriteRule ^([^/.]+)\.([^/.]+)/(.*) /www/$1.$2/index.php?file=$3 [QSA,NC,L]
Обратите внимание, что я добавил последнюю часть в качестве аргумента запроса для index.php.

Да, кстати:

А если этого недостаточно:

Два намека:

Если вы не в размещенной среде (= если это ваша собственная сервер и Вы можете изменять виртуальные хосты , а не только файлы .htaccess), Попробуйте использовать директиву RewriteLog: она помогает вам отслеживать такие проблемы:

# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On

Мой любимый инструмент для проверки регулярных выражений:

Http://www.quanetic.com/Regex (не забудьте выбрать ereg (POSIX) вместо preg(PCRE)!)