Переписать секунду не совпадая?
Я прочитал несколько сообщений о переписывании 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 ответ:
Это должно быть близко к:
Обратите внимание, что я добавил последнюю часть в качестве аргумента запроса дляRewriteCond %{QUERY_STRING} !\.html$ RewriteRule ^([^/.]+)\.([^/.]+)/(.*) /www/$1.$2/index.php?file=$3 [QSA,NC,L]
index.php
.
Да, кстати:
- Вот Вики из serverfault.com
- в официальное руководство реврайт методические указания по
- в официальное руководство и mod_rewrite
А если этого недостаточно:
Два намека:
Если вы не в размещенной среде (= если это ваша собственная сервер и Вы можете изменять виртуальные хосты , а не только файлы
.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)!)