htaccess переписать и рекурсивные внутренние перенаправления - PullRequest
2 голосов
/ 15 декабря 2010

Я хочу сделать простую внутреннюю перезапись htaccess, которая

http://localhost/icore4/t9/module/ac/Main.php?do=subject_add

до

http://localhost/icore4/module/ac/Main.php?do=subject_add

Я использую следующее правило перезаписи

RewriteEngine on
RewriteRule ^([A-Za-z0-9]*/)(.*)$ $2 [NC,L]

Я получаю сообщение об ошибке "Страница не найдена".

Когда я смотрю журнал перезаписи, я вижу, что перезапись происходит рекурсивно Это

http://localhost/icore4/t9/module/ac/Main.php?do=subject_add

до

http://localhost/icore4/module/ac/Main.php?do=subject_add

до

http://localhost/icore4/ac/Main.php?do=subject_add

до

http://localhost/icore4/Main.php?do=subject_add

LOG

127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#34ad8e8/initial] (1) pass through /icore4/t9/module/ac/Main.php
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#34ad8e8/initial] (3) [perdir F:/xampp/htdocs/icore4/] add path info postfix: F:/xampp/htdocs/icore4/t9 -> F:/xampp/htdocs/icore4/t9/module/ac/Main.php
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#34ad8e8/initial] (3) [perdir F:/xampp/htdocs/icore4/] strip per-dir prefix: F:/xampp/htdocs/icore4/t9/module/ac/Main.php -> t9/module/ac/Main.php
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#34ad8e8/initial] (3) [perdir F:/xampp/htdocs/icore4/] applying pattern '^([A-Za-z0-9]*/)(.*)$' to uri 't9/module/ac/Main.php'
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#34ad8e8/initial] (2) [perdir F:/xampp/htdocs/icore4/] rewrite 't9/module/ac/Main.php' -> 'module/ac/Main.php'
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#34ad8e8/initial] (3) [perdir F:/xampp/htdocs/icore4/] add per-dir prefix: module/ac/Main.php -> F:/xampp/htdocs/icore4/module/ac/Main.php
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#34ad8e8/initial] (2) [perdir F:/xampp/htdocs/icore4/] strip document_root prefix: F:/xampp/htdocs/icore4/module/ac/Main.php -> /icore4/module/ac/Main.php
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#34ad8e8/initial] (1) [perdir F:/xampp/htdocs/icore4/] internal redirect with /icore4/module/ac/Main.php [INTERNAL REDIRECT]
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#3481db8/initial/redir#1] (2) init rewrite engine with requested uri /icore4/module/ac/Main.php
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#3481db8/initial/redir#1] (1) pass through /icore4/module/ac/Main.php
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#3481db8/initial/redir#1] (3) [perdir F:/xampp/htdocs/icore4/] strip per-dir prefix: F:/xampp/htdocs/icore4/module/ac/Main.php -> module/ac/Main.php
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#3481db8/initial/redir#1] (3) [perdir F:/xampp/htdocs/icore4/] applying pattern '^([A-Za-z0-9]*/)(.*)$' to uri 'module/ac/Main.php'
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#3481db8/initial/redir#1] (2) [perdir F:/xampp/htdocs/icore4/] rewrite 'module/ac/Main.php' -> 'ac/Main.php'
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#3481db8/initial/redir#1] (3) [perdir F:/xampp/htdocs/icore4/] add per-dir prefix: ac/Main.php -> F:/xampp/htdocs/icore4/ac/Main.php
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#3481db8/initial/redir#1] (2) [perdir F:/xampp/htdocs/icore4/] strip document_root prefix: F:/xampp/htdocs/icore4/ac/Main.php -> /icore4/ac/Main.php
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#3481db8/initial/redir#1] (1) [perdir F:/xampp/htdocs/icore4/] internal redirect with /icore4/ac/Main.php [INTERNAL REDIRECT]
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#3487118/initial/redir#2] (2) init rewrite engine with requested uri /icore4/ac/Main.php
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#3487118/initial/redir#2] (1) pass through /icore4/ac/Main.php
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#3487118/initial/redir#2] (3) [perdir F:/xampp/htdocs/icore4/] add path info postfix: F:/xampp/htdocs/icore4/ac -> F:/xampp/htdocs/icore4/ac/Main.php
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#3487118/initial/redir#2] (3) [perdir F:/xampp/htdocs/icore4/] strip per-dir prefix: F:/xampp/htdocs/icore4/ac/Main.php -> ac/Main.php
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#3487118/initial/redir#2] (3) [perdir F:/xampp/htdocs/icore4/] applying pattern '^([A-Za-z0-9]*/)(.*)$' to uri 'ac/Main.php'
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#3487118/initial/redir#2] (2) [perdir F:/xampp/htdocs/icore4/] rewrite 'ac/Main.php' -> 'Main.php'
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#3487118/initial/redir#2] (3) [perdir F:/xampp/htdocs/icore4/] add per-dir prefix: Main.php -> F:/xampp/htdocs/icore4/Main.php
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#3487118/initial/redir#2] (2) [perdir F:/xampp/htdocs/icore4/] strip document_root prefix: F:/xampp/htdocs/icore4/Main.php -> /icore4/Main.php
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#3487118/initial/redir#2] (1) [perdir F:/xampp/htdocs/icore4/] internal redirect with /icore4/Main.php [INTERNAL REDIRECT]
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#34895f8/initial/redir#3] (2) init rewrite engine with requested uri /icore4/Main.php
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#34895f8/initial/redir#3] (1) pass through /icore4/Main.php
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#34895f8/initial/redir#3] (3) [perdir F:/xampp/htdocs/icore4/] strip per-dir prefix: F:/xampp/htdocs/icore4/Main.php -> Main.php
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#34895f8/initial/redir#3] (3) [perdir F:/xampp/htdocs/icore4/] applying pattern '^([A-Za-z0-9]*/)(.*)$' to uri 'Main.php'
127.0.0.1 - - [15/Dec/2010:12:57:17 +051800] [localhost/sid#93d158][rid#34895f8/initial/redir#3] (1) [perdir F:/xampp/htdocs/icore4/] pass through F:/xampp/htdocs/icore4/Main.php

Ответы [ 2 ]

3 голосов
/ 21 декабря 2010

Я думаю, что эта рекурсия должна произойти.

После того, как URL проходит через правило перезаписи, он снова передается модулю mod_rewrite с тем же htaccess.В вашем случае он всегда будет удовлетворять Reg exp.

. Вы можете добавить cond для перезаписи, чтобы избежать того же, что-то вроде

RewriteEngine on
RewriteCond %{QUERY_STRING} !t=(.*)
RewriteRule ^([A-Za-z0-9_-]*/)(.*)$ $2?%{QUERY_STRING}&t=$1 [NC,L]
1 голос
/ 16 декабря 2010

Используйте более строгий шаблон, если можете, например, ограничив первый сегмент двумя символами:

RewriteRule ^[A-Za-z0-9]{2}/(.+) $1 [L]

Или указав количество следующих сегментов:

RewriteRule ^[A-Za-z0-9]+/([^/]+/[^/]+/[^/]+)$ $1 [L]
...