2013-10-07 2 views
1

Я пытаюсь написать перенаправление htaccess, но он не работает так, как я хочу. Мой текущий (рабочий) Htaccess перенаправляет все HTML-страницы с 1 символ в файл индекса, как:htaccess перенаправить динамические URL

RewriteRule ^([a-zA-Z0-9]).html$ index.php?letter=$1 

Так a.html получает перенаправлены на index.php письмо = а Теперь мне нужно перенаправить на страницу A .html? page = 2 to index.php? letter = a & page = 2 В основном я хочу перенаправить URL-адрес, но оставим динамическую часть неповрежденной. Все перечисленное возвращают 404:

RewriteRule ^([a-zA-Z0-9]).html?page=([0-9]+) index.php?letter=$1&page=$2 

RewriteRule ^([a-zA-Z0-9]).html?page=(.*) index.php?letter=$1&page=$2 

RewriteCond %{QUERY_STRING} page=(.*) 
RewriteRule ^([a-zA-Z0-9]).html(.*) index.php?letter=$1&page=%1 

Я думаю, что я нахожусь рядом, но я не могу показаться, чтобы получить там:/ может кто-нибудь дать мне последний толчок?

ответ

2

Ваш RewriteRule должен быть

RewriteRule ^([a-zA-Z0-9])\.html$ index.php?letter=$1 [QSA,NC,L] 

Пожалуйста, обратите внимание, что параметры URL являются не доступны для согласования в RewriteRule. Если вам просто нужно добавить дополнительный параметр URL, вы можете сделать это вместе с флагом [QSA], который позаботится о добавлении исходных параметров URL для вас.

Обратите внимание, что точка до html должна быть экранирована \.. [L] гарантирует, что переписывание остановится и не будет применено никаких дополнительных правил (если таковые имеются).

+0

отличные вещи, спасибо! Перематывания htaccess трудны ... Не знал о побеге за точку, но, похоже, она работает нормально без нее. , чтобы быть понятным для других, которые могут понадобиться для понимания: rewritecond не требуется. – bolvo

+0

@bolvo, он работает, потому что '.' соответствует любому символу, поэтому даже недопустимые пути, такие как'/k9html', будут обслуживаться. –

+0

сообщение получив, спасибо для объяснения. – bolvo

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