domain.com/index/ 至 domain.com/index.php
domain.com/index/hello 至 domain.com/index.php/hello
该网站使用path_info,默认规则不起作用:
RewriteRule ^([^/]+)/(.*)$ $1.php/$2 [L]
我改为:RewriteRule ^([^/.]+)((/[^/]+)*)/?$ $1.php$2 [L]
那很奇怪
domain.com/index/到domain.com/index.php 正常运行
domain.com/index/hello到domain.com/index.php/hello 无效
它表示未指定输入文件。
Php在apache中以快速cgi模式运行
答案 0 :(得分:0)
我认为应该是:
RewriteRule ^([^/]+)/(.*)?$ $1.php/$2 [L]
所以第二组是可选的。
另外,我建议你不要使用url中传递的变量来匹配文件,这可能会导致安全问题。
答案 1 :(得分:0)
显然,你的正则表达式需要转义/
。试试这个:
RewriteRule ^([^\/]+)\/(.*)$ $1.php/$2 [L]
答案 2 :(得分:0)
I change to: RewriteRule ^([^/.]+)((/[^/]+)*)/?$ $1.php$2 [L]
那很奇怪
domain.com/index/到domain.com/index.php工作正常
domain.com/index/hello到domain.com/index.php/hello无法正常工作
它表示未指定输入文件。
答案 3 :(得分:0)
您需要排除以.php
结尾的匹配项:
RewriteCond $1 !.+\.php$
RewriteRule ^([^/]+)/(.*)$ $1.php/$2 [L]
否则/index.php/hello
也会被重写为/index.php.php/hello
,并且会被重写为/index.php.php.php/hello
并且......