2010-07-20 3 views
0

В данный момент я просто соответствие цифры, буквы, тире и подчеркивания в моем файле .htaccess:Match «полной остановки» в мод переписывание

RewriteRule ^([A-Za-z0-9-_]+)/?$ index.php?folder=$1 

Я также хочу, чтобы соответствовать полной остановки в строке. Я не хочу использовать:

(.*) 

Я попытался:

([.A-Za-z0-9-_]+) 
([\.A-Za-z0-9-_]+) 
([\\.A-Za-z0-9-_]+) 
([A-Za-z0-9-_\.]+) 

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

---------- Дополнительная информация ----------------

В качестве примера:

mydomain.com/groups/ зеленый/должен пойти в index.php? папка = зеленый

в дополнение я также переписывание поддоменов поверх этого (я думаю, что это вызывает усложнение) ...

anotherdomain.com должен map to index.php? folder = anotherdomain.com

Я успешно переписана субдомен со следующим правилом:

# external group domain name 
RewriteCond %{ENV:Rewrite-Done} !^Yes$ 
## exclude requests from myhost.com 
RewriteCond %{HTTP_HOST} !^www\.myhost\.com 
## allowed list of domain masking domains 
RewriteCond %{HTTP_HOST} ^(anotherdomain.com|extra.domain.com|external.otherdomain.com) 
RewriteRule (.*) /groups/%1/$1 

Я думаю, что это где сложность заключается.

---------------- Решение ----------------------

Несмотря на не найти решение точной задачи выше, я работал вокруг него путем изменения первого перенаправлять (который отображает внешние домены) от:

RewriteRule (.*) /groups/%1/$1 

к:

RewriteRule (.*) /groups/external/$1&external_domain=%1 

второй повторной записи (в папке) может затем интерпретировать переменную «внешний домен» вместо папки.

ответ

1

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

На самом деле есть небольшая проблема со вторым тире в 0-9-_. Если вам нужна тире внутри квадратных скобок, вы должны поместить ее в начале класса символов. В противном случае она будет иметь особое значение для определения диапазона символов:

([-.A-Za-z0-9_]+) 

Если это не работает, есть что-то еще не так с вашим RewriteRule. Например, если это глобальное правило, а не для каждого каталога (без RewriteBase), то URL-адреса начинаются с косой черты /.

+0

Спасибо, Джон. По-моему, я добавил дополнительную сложность. Я переписываю на основе имени каталога, но в некоторых случаях я также переписываю (через другой файл .htaccess в моем корне doc), чтобы отображать субдомены в виде папок. Я буду редактировать свой пост, чтобы содержать эту дополнительную информацию. –

+0

Я добавил дополнительную информацию John.Для записи «простая» (без отображения поддомена) версия по-прежнему не срабатывала на полных остановках. Я тестирую несколько более простых примеров, чтобы попытаться подтвердить мои знания. –

+0

Этот ответ отвечает на мой первоначальный вопрос. –

Смежные вопросы