2013-05-07 84 views
0

有人可以帮助我再次对此重写模块,国防部重写内部错误500多个斜线

本细则

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

这个规则,我可以得到所请求的URL www.example.com/test to 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] 

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

回答

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附加到重写的查询字符串。

+0

感谢您的答复,但据我所知,它会将所有请求重定向到文件test.php,不是吗? 但我想要的实际上脚本文件的斜杠后面的第一个值,然后其余的将被忽略。 例如www.example.com/file/param1/param2/param3 这个www.example.com/file.php – h4uw1n3 2013-05-08 07:50:39

+0

我试过这个网站 http://www.generateit.net/mod-rewrite/ 它给出结果 对此 www.example.com/file/param1/param2/ param3这个www.example.com/file.php?params=param1/param2/param3 但它不起作用。任何其他想法? – h4uw1n3 2013-05-08 07:53:03

+0

真棒...这是一个快速响应,无论如何,示例2适用于www.example.com/file/和www.example.com/file/params/params,但不适用于www.example.com/file然后我看着你的第三个例子,我添加了一个“?”像这样.. RewriteRule ^([^ /。] +)/?(。*)$ $ 1.php?params = $ 2 [QSA,L] ...完成了...太棒了!非常感谢....太糟糕了,我不能投票你回答.... – h4uw1n3 2013-05-08 09:25:48