.htaccess 不带查询参数访问htaccess重写的URL

.htaccess 不带查询参数访问htaccess重写的URL,.htaccess,.htaccess,我已将PHP文件的URL重写为: RewriteRule ^psu/(.*)/(.*)/(.*)/(.*) _psu.php?id=$1&mb=$2&cpu=$3&name=$4 [L] 这使得页面_psu.php只能通过以下方式访问: psu/path/path/path/path 任何其他URL,如: psu/path/path/path/ psu/path/path/ psu/path/ psu 给出404未找到错误。 如何重写URL-psu/path/pat

我已将PHP文件的URL重写为:

RewriteRule ^psu/(.*)/(.*)/(.*)/(.*) _psu.php?id=$1&mb=$2&cpu=$3&name=$4 [L]
这使得页面_psu.php只能通过以下方式访问:

psu/path/path/path/path
任何其他URL,如:

psu/path/path/path/
psu/path/path/
psu/path/
psu
给出404未找到错误。
如何重写URL-
psu/path/path/path/path/path/path
保持上述URL的可访问性?

要在
psu
后处理动态长度路径,请在站点根目录中使用此规则。htaccess:

AcceptPathInfo on
RewriteEngine On

RewriteRule ^psu(/.*)?$ _psu.php$1 [L,NC]
php的内部
代码中使用:

$_SERVER["PATH_INFO"]
获取路径信息。您可以按
/
将其拆分以获得路径组件列表。

您可以使用:

RewriteRule ^psu(?:/([^/]*)(?:/([^/]*)(?:/([^/]*)(?:/([^/]*)/?)?)?)?)?$ _psu.php?id=$1&mb=$2&cpu=$3&name=$4 [L]
试试这个:

RewriteEngine On
RewriteBase /
RewriteRule ^psu(?:/([^/]*)(?:/([^/]*)(?:/([^/]*)(?:/([^/]*)/?)?)?)?)?$ _psu.php?id=$1&mb=$2&cpu=$3&name=$4 [L]
\u psu.php中

<?
$id = $_GET["id"];
$mb = $_GET["mb"];
$cpu = $_GET["cpu"];
$name = $_GET["name"];

echo "id: $id<br>
mb: $mb<br>
cpu: $cpu<br>
name: $name";
?>

满足所有提到的退休要求。

我甚至没有尝试过。这不是我正在寻找的解决方案。请澄清它有什么问题?它匹配您所显示的所有URL。对于类似于
psu/path/path/path/path
的路径,它可能无法正常工作$3将变为空白,4美元将具有最终路径match@TarunLalwani谢谢,我改变了规则
/psu/1/2/3/4
/psu/1/2/3
/psu/1/2
/psu/1
/psu