【发布时间】:2013-02-03 03:59:52
【问题描述】:
GET 正在获取文件扩展名和值。 这是我的 .htaccess -
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^test/(.*)/(.*)/$ /Test3.php?u=$1&i=$2 [NC,L]
RewriteRule ^test/(.*)/(.*)$ /Test3.php?u=$1&i=$2 [NC,L]
RewriteRule ^test/(.*)/$ /Test3.php?u=$1 [NC,L]
文件Test3.php是这样的-
<?php
echo $_GET['u'];
echo '<br/>';
echo $_GET['i'];
?>
我正在传递的网址 - http://example.com/test/something/more/
我的浏览器上的输出 -
something/more.php
想要的输出在哪里
something
more
我已经刮掉了我的整个网站来解决这个问题,但没有运气。不知道为什么我最后会得到那个 php,而 http://example.com/test/ 之后的完整值只会转到第一个参数。
请帮忙!
谢谢大家!我相信这个问题来自这条线。请就此提出解决方案。
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(([^/]+/)*[^.]+)\.php http://www.example.com/$1 [R=301,L]
【问题讨论】:
-
我不知道正则表达式是否贪心,但这可能是问题所在,因为 (.*) 可能表示“包括斜线在内的所有内容”。
-
RewriteRule ^(([^/]+/)*[^.]+)\.php在您的新代码中看起来像是添加了 .php 因为\.php