htaccess的重写和递归的内部重定向 [英] htaccess rewrite and recursive internal redirects

查看:145
本文介绍了htaccess的重写和递归的内部重定向的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想做一个简单的内部htaccess的重写这是

 的http://localhost/icore4/t9/module/ac/Main.php DO = subject_add
 

 的http://localhost/icore4/module/ac/Main.php DO = subject_add
 

我使用下面的重写规则

  RewriteEngine叙述上
重写规则^([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] [本地主机/ SID#93d158] [摆脱#34ad8e8 /初始](1)通通过/icore4/t9/module/ac/Main.php
127.0.0.1  -   -  [15 / DEC / 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#34ad8e8 /初始](3)[perdir F:/ XAMPP / htdocs中/ icore4 /]加路径信息后缀: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] [本地主机/ SID#93d158] [摆脱#34ad8e8 /初始](3)[perdir F:/ XAMPP / htdocs中/ icore4 /]条每DIR preFIX:F:/xampp/htdocs/icore4/t9/module/ac/Main.php  - > T9 /模块/ AC / Main.php
127.0.0.1  -   -  [15 / DEC / 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#34ad8e8 /初始](3)[perdir F:/ XAMPP / htdocs中/ icore4 /]应用模式'^([A-ZA-Z0-9] * /)(。*)$'到URIT9 /模块/ AC / Main.php
127.0.0.1  -   -  [15 / DEC / 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#34ad8e8 /初始](2)[perdir F:/ XAMPP / htdocs中/ icore4 /]重写T9 /模块/ AC / Main.php - > 模块/ AC / Main.php
127.0.0.1  -   -  [15 / DEC / 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#34ad8e8 /初始](3)[perdir F:/ XAMPP / htdocs中/ icore4 /]加每DIR preFIX:模块/ AC / Main.php  - > F:/xampp/htdocs/icore4/module/ac/Main.php
127.0.0.1  -   -  [15 / DEC / 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#34ad8e8 /初始](2)[perdir F:/ XAMPP / htdocs中/ icore4 /]条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] [本地主机/ SID#93d158] [摆脱#34ad8e8 /初始](1)[perdir F:/ XAMPP / htdocs中/ icore4 /]内部重定向与/icore4/module/ac/Main.php [内部重定向]
127.0.0.1  -   -  [15 / DEC / 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#3481db8 /初始/再导向#1](2)初始重写引擎请求的URI / icore4 /模块/ AC / Main.php
127.0.0.1  -   -  [15 / DEC / 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#3481db8 /初始/再导向#1](1)通过/ icore4 /模块/ AC / Main.php
127.0.0.1  -   -  [15 / DEC / 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#3481db8 /初始/再导向#1](3)[perdir F:/ XAMPP / htdocs中/ icore4 /]条每个DIR preFIX:F:/xampp/htdocs/icore4/module/ac/Main.php  - >模块/ AC / Main.php
127.0.0.1  -   -  [15 / DEC / 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#3481db8 /初始/再导向#1](3)[perdir F:/ XAMPP / htdocs中/ icore4 /]应用模式'^([A-ZA-Z0-9] * /)(。*)$'到URI模块/ AC / Main.php
127.0.0.1  -   -  [15 / DEC / 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#3481db8 /初始/再导向#1](2)[perdir F:/ XAMPP / htdocs中/ icore4 /]重写模块/ AC / Main.php - > AC / Main.php
127.0.0.1  -   -  [15 / DEC / 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#3481db8 /初始/再导向#1](3)[perdir F:/ XAMPP / htdocs中/ icore4 /]增加每个DIR preFIX:AC / Main.php  - > F:/xampp/htdocs/icore4/ac/Main.php
127.0.0.1  -   -  [15 / DEC / 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#3481db8 /初始/再导向#1](2)[perdir F:/ XAMPP / htdocs中/ icore4 /]条的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] [本地主机/ SID#93d158] [摆脱#3481db8 /初始/再导向#1](1)[perdir F:/ XAMPP / htdocs中/ icore4 /]内部重定向与/icore4/ac/Main.php [内部重定向]
127.0.0.1  -   -  [15 /减速/ 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#3487118)/(初始/再导向#2](2)INIT重写发动机与请求的URI / icore4 / AC / Main.php
127.0.0.1  -   -  [15 / DEC / 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#3487118 /初始/再导向#2](1)通过/ icore4 / AC /主。 PHP
127.0.0.1  -   -  [15 / DEC / 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#3487118 /初始/再导向#2](3)[perdir F:/ XAMPP / htdocs中/ icore4 /]添加路径信息后缀:F:/ XAMPP / htdocs中/ icore4 / AC  - > F:/xampp/htdocs/icore4/ac/Main.php
127.0.0.1  -   -  [15 / DEC / 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#3487118 /初始/再导向#2](3)[perdir F:/ XAMPP / htdocs中/ icore4 /]条每个DIR preFIX:F:/xampp/htdocs/icore4/ac/Main.php  - > AC / Main.php
127.0.0.1  -   -  [15 / DEC / 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#3487118 /初始/再导向#2](3)[perdir F:/ XAMPP / htdocs中/ icore4 /]应用模式'^([A-ZA-Z0-9] * /)(。*)$'到URIAC / Main.php
127.0.0.1  -   -  [15 /减速/ 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#3487118)/(初始/再导向#2](2)[perdir F:/ XAMPP / htdocs中/ icore4 /]改写AC / Main.php - > Main.php
127.0.0.1  -   -  [15 / DEC / 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#3487118 /初始/再导向#2](3)[perdir F:/ XAMPP / htdocs中/ icore4 /]增加每个DIR preFIX:Main.php  - > F:/xampp/htdocs/icore4/Main.php
127.0.0.1  -   -  [15 /减速/ 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#3487118)/(初始/再导向#2](2)[perdir F:/ XAMPP / htdocs中/ icore4 /]条的document_root preFIX:F:/xampp/htdocs/icore4/Main.php  - > /icore4/Main.php
127.0.0.1  -   -  [15 /减速/ 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#3487118)/(初始/再导向#2](1)[perdir F:/ XAMPP / htdocs中/ icore4 /]内部重定向与/icore4/Main.php [内部重定向]
127.0.0.1  -   -  [15 /减速/ 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#34895f8 /初始/再导向#3](2)INIT重写发动机与请求的URI / icore4 / Main.php
127.0.0.1  -   -  [15 / DEC / 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#34895f8 /初始/再导向#3](1)通过/icore4/Main.php
127.0.0.1  -   -  [15 / DEC / 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#34895f8 /初始/再导向#3](3)[perdir F:/ XAMPP / htdocs中/ icore4 /]条每个DIR preFIX:F:/xampp/htdocs/icore4/Main.php  - > Main.php
127.0.0.1  -   -  [15 / DEC / 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#34895f8 /初始/再导向#3](3)[perdir F:/ XAMPP / htdocs中/ icore4 /]应用模式'^([A-ZA-Z0-9] * /)(。*)$'到URIMain.php
127.0.0.1  -   -  [15 /减速/ 2010:12:57:17 051800] [本地主机/ SID#93d158] [摆脱#34895f8 /初始/再导向#3](1)[perdir F:/ XAMPP / htdocs中/ icore4 /]通过F:/xampp/htdocs/icore4/Main.php
 

解决方案

我觉得这个递归应该发生的。

在链接穿过重写规则,再次传递到具有相同的htaccess mod_rewrite的发动机。在你情况下,将始终满足注册EXP。

您可以将一个改写COND,以避免同样的,像

  RewriteEngine叙述上
的RewriteCond%{QUERY_STRING}!T =(。*)
重写规则^([A-ZA-Z0-9 _-] * /)$ $ 2%{QUERY_STRING}&AMP(*);?T = $ 1 [NC,L]
 

I want to do a simple internal htaccess rewrite which is

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

to

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

I am using the following rewrite rule

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

I keep getting page not found error.

When I look at the rewrite log I see that the rewriting is happening recursively. That is

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

to

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

to

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

to

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

解决方案

I think this recursion is supposed to happen.

After the url goes through the rewrite rule, it is again passed to the mod_rewrite engine with the same htaccess. In you case it will always satisfy the Reg exp.

You may put a rewrite cond to avoid the same, something like

RewriteEngine on
RewriteCond %{QUERY_STRING} !t=(.*)
RewriteRule ^([A-Za-z0-9_-]*/)(.*)$ $2?%{QUERY_STRING}&t=$1 [NC,L]

这篇关于htaccess的重写和递归的内部重定向的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆