Как «переписать правило» для подкаталога? .htaccess / PHP - PullRequest
0 голосов
/ 19 июня 2009

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

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

Я попытался следовать в файле .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"

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

1 Ответ

0 голосов
/ 19 июня 2009

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

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