перенаправление htaccess с помощью строки запроса - PullRequest
0 голосов
/ 17 июня 2011

Как я могу перенаправить следующий URL http://test.com/changefile.php?filename=top-ranked-colleges

до

http://test.com/top-ranked-colleges.php используя перенаправление htaccess.

Кто-нибудь, пожалуйста, помогите мне. Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 17 июня 2011

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

RewriteCond %{QUERY_STRING} ^filename=(.*)$
RewriteRule .* http://test.com/%1.php? [R=301,L]

изменить http://test.com/changefile.php?filename=top-ranked-colleges на http://test.com/top-ranked-colleges.php

RewriteCond %{REQUEST_URI} ^/(.*).php$
RewriteRule .* http://test.com/changefile.php?filename=$1 [L]

изменить http://test.com/top-ranked-colleges.php на http://test.com/changefile.php?filename=top-ranked-colleges

1 голос
/ 17 июня 2011

Это работает :

RewriteCond %{REQUEST_URI}  ^/changefile\.php$
RewriteCond %{QUERY_STRING} ^filename=([0-9a-z_-]+)$
RewriteRule ^(.*)$ http://website.com/%1.php? [R=301,L]

Объяснение

%1 взято из: RewriteCond% {QUERY_STRING} ^ filename = ([0-9a-z _-] +) $

Наличие ? в RewriteRule останавливает добавление исходной строки запроса к перенаправлению

Если вызываемый файл - changefile.php, и у него есть строка запроса с именем файла = внутри, затем перенаправьте, используя %1 в качестве страницы для перехода.

Если вы используете RewriteBase, вам нужно будет добавить это тоже:

Например:

RewriteBase /test/

RewriteCond %{REQUEST_URI}  ^/test/changefile\.php$

Это не работает:

RewriteRule ^changefile.php?filename=([a-z0-9-]+)$ http://test.com/$1.php? [R=301,L]

Это связано с тем, что вы не можете проверить строку запроса с помощью RewriteRule или RedirectMatch

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...