как переписать правило для подкаталога? .htaccess/php

У меня есть одна папка с именем test, расположенная по адресу www.mydomain.com/abc/files/test. Мне нужно изменить URL-адреса с www.mydomain.com/abc/files/test/test.php?id=15&key=some-text123

to www.mydomain.com/abc/files/test/15/some-text123 это похоже на URL-адреса SO.

Я попытался выполнить в файле .htaccess следующий код

RewriteEngine on 
Options +FollowSymlinks
RewriteBase / 
RewriteRule ^test/([0-9]+)/([A-Za-z0-9-]+)?$ test/test.php?id=$1&key=$2 [R]

Он перенаправляет меня на www.mydomain.com/test/test.php?id=15&key=some-text-123, но это не сработало, так как я откуда-то скопировал формат. Я не уверен, что ^ также должен включать часть www или он просто предполагает / как root?

Часть «id» важна для меня. Я также рассмотрю следующие адреса как действительные URL-адреса.

www.mydomain.com/abc/files/test/15 (without /some-text123")
www.mydomain.com/abc/files/test/15/ (without /some-text123 but having / )

Не могли бы вы помочь мне написать правильное правило?

Как я могу сделать так, чтобы мне не приходилось жестко кодировать «abc/files/»?

Это не должно влиять ни на какие другие URL-адреса моего сайта (кроме папки «test».)

Также URL-адрес должен оставаться прежним (/files/test/15 etc), а не меняться на "?id=15&key=some-text123".

Большое спасибо.


person TigerTiger    schedule 19.06.2009    source источник


Ответы (1)


R флаг вызывает внешнее перенаправление. Так что просто оставьте его, и запрос будет перенаправлен внутри:

RewriteRule ^test/([0-9]+)/([A-Za-z0-9-]+)?$ test/test.php?id=$1&key=$2
person Gumbo    schedule 19.06.2009
comment
я уже пробовал .. не работает .. выдает объект не найден - person TigerTiger; 19.06.2009