mod_rewrite, чтобы изменить мои URL - PullRequest
0 голосов
/ 19 апреля 2010

Я некоторое время боролся с переписыванием модов.

По сути, у меня есть веб-сайт, который я перемещаю в другое пространство имен / каталог.

Что бы якак сделать, это изменить URL-адреса, которые выглядят следующим образом:

http://mydomain.com/index.php?a=xxxxxxxxxx

Эти URL-адреса всегда будут иметь "index.php? a =".У меня есть другой / новый сайт, на котором также есть файл index.php, поэтому важно, чтобы я переписывал его только в том случае, если в URL есть символ a = *.

Новый URL-адрес должен выглядеть как

* 1013.*http://mydomain.com/ns1/index.php?a=xxxxxxxxxxx

Кажется довольно простым, но я не могу заставить mod_rewrite сделать это для меня, вот что у меня есть:

# переписать старые URL-адреса в новое пространство имен
RewriteRule ^ / index.php \? A = (. *) $ /Gc1/index.php\?x=1&a=$1 [R = 301, L]

Что-то не так?

Ответы [ 3 ]

1 голос
/ 19 апреля 2010

Я считаю, что RewriteRule действителен только для путей (т. Е. Он не будет учитывать любые параметры запроса, которые вы добавляете.)

Возможно, вам лучше сделать это в самом файле PHP.1003 *

// On old site
if($_GET['a']=="xxxxxxx"){
header("Location: /ns1/index.php?a=".$_GET['a']);
die();
}
1 голос
/ 19 апреля 2010

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

RewriteRule !^ns1/ /ns1%{REQUEST_URI} [L]

Это правило добавляет префикс пути URI к /ns1, если путь еще не начинается с него.

0 голосов
/ 20 апреля 2010

Спасибо вам обоим.

Я смог это сделать:

# rewrite old urls to new ns1 namespace
RewriteCond %{QUERY_STRING} ^a=.*$
RewriteCond %{REQUEST_URI} !^/ns1/.*$
RewriteRule ^(.*)$ ns1$1 [R=301,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...