有人可以再次帮我解决这个重写模块,
遵守此规则
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]
我确实一直在检查右边出现的每个类似的问题,但我还没有看到任何解决方案。
答案 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
会附加到重写的查询字符串中。