мое перенаправление .htaccess не удается - PullRequest
0 голосов
/ 28 октября 2011

htaccess включен, у меня запущена канонизация (без www на www.)

Я пытаюсь использовать htaccess для выполнения следующих действий:

www.domain.com/page.php?i=Page1
www.domain.com/page.php?i=Page2

To

www.domain.com/Page1
www.domain.com/Page2

Я пытался использовать этот фрагмент кода, но пока безрезультатно:

rewriterule ^([a-zA-Z0-9_-]+)/$ page.php?i=$1

Однако я думаю, что иду наоборот.Я не могу найти пример для этого.У меня есть это , но я не могу заставить его работать.

Ответы [ 3 ]

2 голосов
/ 28 октября 2011

Попробуйте это:

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/page\.php$
RewriteCond %{QUERY_STRING} ^i=([a-zA-Z0-9_-]+)$
RewriteRule ^(.*)$ http://www.domain.com/%1? [R=302,L]

взято из: http://www.simonecarletti.com/blog/2009/01/apache-query-string-redirects/

0 голосов
/ 28 октября 2011

Чтобы разобрать строку запроса, вам необходимо получить к ней доступ в RewriteCond

# We need this line because /page.php?i=page.php will cause an infinite loop
RewriteCond %{QUERY_STRING} !i=page.php
# Now we parse out the value of i from the query string
RewriteCond %{QUERY_STRING} i=([^&]+)
RewriteRule ^page.php /%1  [L]
0 голосов
/ 28 октября 2011

Вы хотите, чтобы www.domain.com/Page1 было видно в адресной строке браузера, но внутренне этот URL должен фактически /page.php?i=Page1. В этом случае проблема заключается в конце / в вашем регулярном выражении:

Rewriterule ^([a-zA-Z0-9_-]+)/$ page.php?i=$1
                             ^---here

В вашем желаемом /Page1 URL-адресе нет косой черты, но для регулярного выражения перезаписи требуется один, поэтому шаблон не совпадает и перезапись не происходит. Попробуйте удалить / и посмотрите, поможет ли это:

Rewriterule ^([a-zA-Z0-9_-]+)$ page.php?i=$1
                             ^---no /
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...