访问htaccess重写的URL没有查询参数

问题描述 投票:0回答:3

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

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

这使得页面_psu.php仅可访问:

psu/path/path/path/path

任何其他网址,如:

psu/path/path/path/
psu/path/path/
psu/path/
psu

给出404 Not Found错误。如何重写URL - psu/path/path/path/path保持上述URL可访问?

.htaccess
3个回答
1
投票

试试这个:

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

_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/1/2/3/4
/psu/1/2/3
/psu/1/2
/psu/1
/psu

满足所有提到的退休。


0
投票

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

AcceptPathInfo on
RewriteEngine On

RewriteRule ^psu(/.*)?$ _psu.php$1 [L,NC]

php内部的_psu.php代码中使用:

$_SERVER["PATH_INFO"]

获取路径信息。您可以通过/将其拆分以获取路径组件列表。


0
投票

您可以使用:

RewriteRule ^psu(?:/([^/]*)(?:/([^/]*)(?:/([^/]*)(?:/([^/]*)/?)?)?)?)?$ _psu.php?id=$1&mb=$2&cpu=$3&name=$4 [L]
© www.soinside.com 2019 - 2024. All rights reserved.