带有多个参数的 htaccess

带有多个参数的 htaccess
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !\.php$

RewriteRule ^(.*)/(.*)/(.*)$ $1.php?Action=$2&id=$3
RewriteRule ^(.*)/(.*)$ $1.php?Action=$2
RewriteRule ^(.*)$ $1.php

这是我的.htaccess。但是只有第一个RewriteRule有效。如果我注释掉其他规则,剩下的其他规则可以正常工作,但它们不能一起工作。我想要的是带有多个参数的干净 URL。

我对这个问题一无所知。我在 Google 上搜索了很多,找到的所有信息都与我的代码相同。

答案1

您需要使用 C 标志链接您的 RewriteRules,如 ServerFault 页面上所述您想了解有关 Mod_Rewrite 规则的所有信息但又不敢问吗?

对于你的情况,可以这样做:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !\.php$

RewriteRule ^(.*)/(.*)/(.*)$ $1.php?Action=$2&id=$3 [C]
RewriteRule ^(.*)/(.*)$ $1.php?Action=$2 [C]
RewriteRule ^(.*)$ $1.php

答案2

Options -MultiViews 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !\.php$ 
RewriteRule ^(.*)/(.*)/(.*)$ /api/$1.php?Action=$2&id=$3 [L] 
RewriteRule ^(.*)/(.*)$ /api/$1.php?Action=$2 [L]

使用 [L] 标志后,我的 htaccess 开始正常工作。

相关内容