.htaccess перезаписать второй случай перезаписи уровня 2 папка = информация - PullRequest
1 голос
/ 08 января 2009

Я хотел установить .htaccess для перезаписи:

example.com/bla/info/

до

example.com/info/index.php?q=bla

example.com/bla/info/txt/

до

example.com/info/index.php?q=bla&t=txt

Я хотел, чтобы браузер все еще отображал:

example.com/bla/info/txt/

Я не хотел переписывать на уровне 2, например:

example.com/bla/xxx/ 

или

example.com/ccc/zzz/aaa/

но

example.com/silly/info/ 

будет работать так же, как и

example.com/strange/info/mytxt/

Это имело смысл?

Любая помощь?

Ответы [ 2 ]

0 голосов
/ 10 января 2009

вы меня правильно выбрали.

у меня получилось что-то вроде этого:

RewriteRule ^([^/\.]+)/info/?$ example/info/index.php?q=$1 [L]

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

0 голосов
/ 10 января 2009

Если вы начинаете свой паттерн с ^ и заканчиваете его $, правило будет применяться только в случае совпадения всей строки.

RewriteRule   ^/bla/info/$      /info/index.php?q=bla
RewriteRule   ^/bla/info/txt/$  /info/index.php?q=bla&t=txt

Если вы используете, не используйте опцию [R], URL-адрес, отображаемый в браузере, будет таким, какой пользователь ввел.

Вы пытаетесь сделать это универсальным? Если это так, вы можете использовать сопоставление по типу регулярного выражения и подстановку переменных. Чтобы заставить 'bla' соответствовать любой строке до следующей косой черты (/), используйте

([^/]+)

в вашем шаблоне и указывайте в нем $ 1 при замене.

RewriteRule ^/([^/]+)/info/$          /info/index.php?q=$1
RewriteRule ^/([^/]+)/info/([^/]+)/$  /info/index.php?q=$1&t=$2

Я рекомендую веб-страницы Apache о mod_rewrite для получения дополнительной информации.

[Edit. Исправлены правила, чтобы не включать имя хоста в шаблон, как выяснил оригинальный постер.]

-
BMB

...