Как перенаправить только основной Root / index.php, а не Root / Folder / index.php через RewriteRule? - PullRequest
0 голосов
/ 18 марта 2011

Дорогие люди, В настоящее время переписать следует перенаправить

/index.php до /en/home

И для этого это прекрасно работает по следующему правилу:

RewriteRule ^index.php /en/home [R=301]

Однако, когда вызывается /someotherfolder/index.php, даже тогда он перенаправляется на /en/home, а это не должно! Как я могу жестко закодировать его, чтобы ТОЛЬКО переписать, при условии, что это файл root-index.php, а не просто какой-либо файл index.php, находящийся в других более глубоких папках?

Большое спасибо за ваши предложения! Очень ценится.

Ответы [ 2 ]

1 голос
/ 18 марта 2011

Вот рабочий образец, надеюсь, это поможет.

RewriteLog "/var/log/httpd/rewrite_log"
RewriteLogLevel 3

Alias /dummy.org /tmp/dummy.org

<Directory /tmp/dummy.org>
  Options FollowSymLinks
  RewriteEngine On
  RewriteRule ^index.htm /en/somepage [R=301]
</Directory>

Если я использую "http://127.0.0.1/dummy.org/index.htm", он переписывается в" http://127.0.0.1/en/somepage"

(3) [perdir /tmp/dummy.org/] strip per-dir prefix: /tmp/dummy.org/index.htm -> index.htm
(3) [perdir /tmp/dummy.org/] applying pattern '^index.htm' to uri 'index.htm'
(2) [perdir /tmp/dummy.org/] rewrite 'index.htm' -> '/en/somepage'
(2) [perdir /tmp/dummy.org/] explicitly forcing redirect with http://127.0.0.1/en/somepage
(1) [perdir /tmp/dummy.org/] escaping http://127.0.0.1/en/somepage for redirect
(1) [perdir /tmp/dummy.org/] redirect to http://127.0.0.1/en/somepage [REDIRECT/301]

Если я использую "http://127.0.0.1/dummy.org/someotherfolder/index.htm", он не будет переписан

(3) [perdir /tmp/dummy.org/] add path info postfix: /tmp/dummy.org/someotherfolder -> /tmp/dummy.org/someotherfolder/index.htm
(3) [perdir /tmp/dummy.org/] strip per-dir prefix: /tmp/dummy.org/someotherfolder/index.htm -> someotherfolder/index.htm
(3) [perdir /tmp/dummy.org/] applying pattern '^index.htm' to uri 'someotherfolder/index.htm'
(1) [perdir /tmp/dummy.org/] pass through /tmp/dummy.org/someotherfolder

-Martin

1 голос
/ 18 марта 2011

Лучшее для отладки RewriteRule - включить ведение журнала процесса перезаписи.

<VirtualHost x.x.x.x>

  ...

  RewriteEngine On
  RewriteLog "/var/log/httpd/rewrite_log"
  RewriteLogLevel 3

  RewriteRule .....................

  ...
</VirtualHost>

Один вопрос, находится ли RewriteRule в разделе VirtualHost или в разделе каталога?

-Martin

...