首页 > 解决方案 > 如何在 htaccess 中使用 get 变量(不同的顺序)

问题描述

我正在学习 PHP 和 HTACCESS atm。

我有一个问题,我使用 4 个不同的 GET 变量。x,y,z,w。

我需要创建一个两者都可以的 URL 结构。

mysite.com/x/y

但是也

mysite.com/x/z

和不同的其他组合。

我已经在 HTACCESS 中尝试过这个,但它只有在结构相同的情况下才有效,而不是与其他组合:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)$ index.php?x=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)$ index.php?x=$1&y=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ index.php?x=$1&y=$2&z=$3 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)$ index.php?x=$1&y=$2&z=$3&w=$4 [L]

标签: php.htaccess

解决方案


指定 [QSA](查询字符串追加),以便您可以在 url 之后传递查询字符串。

示例代码

RewriteEngine On
RewriteRule ^book/([^/]*)\.html$ book.php?title=$1 [QSA,L]

推荐阅读