mod重写内部错误500多个斜杠

时间:2013-05-07 23:16:44

标签: mod-rewrite slash

有人可以再次帮我解决这个重写模块,

遵守此规则

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) $1.php [QSA,L] 

根据这条规则,我可以获得所请求的网址 www.example.com/test至www.example.com/test.php 但我怎么能得到以下网址 www.example.com/test/test2/test3/test4到www.example.com/test.php

我试过

RewriteRule (.*)/?$ $1.php [QSA,L]
不要嘲笑我......我真的试过了

RewriteRule (.*)/(.*)/(.*)/(.*)$ $1.php [QSA,L] 

这适用于此链接

www.example.com/test/test2/test3/test4到www.example.com/test.php

但是,不是为了这个......

www.example.com/test至www.example.com/test.php

我在Php上使用爆炸因为我不知道我需要多少参数,如果它只有2个参数,那么这个规则应该可行。

RewriteRule ^(.+/)?([^/]*)$ p.php?s=%1&p=$2 [QSA,L,NC]

我确实一直在检查右边出现的每个类似的问题,但我还没有看到任何解决方案。

1 个答案:

答案 0 :(得分:0)

您正在创建无限重定向。在请求中尝试检查.php。此外,如果您没有提取斜杠,Apache会重定向到某个文件夹中不存在的index.php。

示例1

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/.]+)/ $1.php [QSA,L]

这将匹配第一个目录并将其拉入查询字符串。

www.example.com/file/param1/param2/param3显示此www.example.com/file.php

示例2

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/.]+)/(.*)$ $1.php?params=$2 [QSA,L]

这将匹配第一个目录并将其拉入查询字符串。 URI的其余部分将添加为参数

www.example.com/file/param1/param2/param3 显示此www.example.com/file.php?params=param1/param2/param3

示例3

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/.]+)/?([^/.]+)?/?([^/.]+)?/?([^/.]+)?$ $1.php?p1=$2&p2=$3&p3=$4 [QSA,L]

www.example.com/file/param1/param2/param3 显示此www.example.com/file.php?p1=param1&p2=param2&p3=param3


注意:[QSA]保留现有参数,因此&original_parameter=param会附加到重写的查询字符串中。