RewriteCond не соответствует? - PullRequest
2 голосов
/ 06 февраля 2012

Я прочитал несколько постов по переписыванию 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, но не могу понять, как это сделать правильно. Чего мне не хватает?

Спасибо, Rob

1 Ответ

4 голосов
/ 06 февраля 2012

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

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)!)

...