Использовать имя каталога в операторе RewriteRule - PullRequest
0 голосов
/ 26 января 2012

Я хочу создать комбинацию RewriteCond / RewriteRule, получив этот результат:

.

.

Есть подсказка?


Я пытаюсь что-то вроде этого:

RewriteCond %{QUERY_STRING} ^(.*)\=(.*)$
RewriteRule ^(.*)$ /$1/%1/%2? [R=301,L]

Но результат не тот, который я искал:

curl -I "http://localhost/testsite/web/dir1/a.php?b=c"

HTTP/1.1 301 Moved Permanently
Date: Thu, 26 Jan 2012 10:36:15 GMT
Server: Apache/2.2.20 (Ubuntu)
Location: http://localhost/dir1/a.php/b/c
Vary: Accept-Encoding
Content-Type: text/html; charset=iso-8859-1

.htacces находится в %{DOCUMENT_ROOT}/testsite/web/.htaccess

Ответы [ 2 ]

0 голосов
/ 26 января 2012

(.*) в вашем RewriteRule соответствует запрошенному URL минус расположение файла .htaccess.

Если /testsite/web/foo/bar - запрошенный URL и файл находитсяв /testsite/web/, тогда /foo/bar соответствует только.

Вам нужно будет настроить это правило перезаписи следующим образом:

RewriteRule (.*) /testsite/web/$1/%1/%2 [R=301,L]
0 голосов
/ 26 января 2012

Вам нужно сделать это на веб-сервере?Поскольку старые ссылки указывают на скрипты PHP, вы можете использовать:

header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.newplace.com/");

Поскольку вам нужно определить новое местоположение из текущего, вам нужно будет использовать что-то вроде:

$_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];

Затем выполните REGEX для этой строки, чтобы определить истинное местоположение перенаправления.

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