Php .htaccess mod_rewrite以清理变量URL

Php .htaccess mod_rewrite以清理变量URL,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我肯定有什么东西可以回答我的问题,但我找不到 简而言之:我想使用.htaccess和mod_rewrite来清理我的URL 目前我有3个可能的变量 c代表类别,m代表制造商,p代表第页 如果只有c,它将显示该类别下所有可能的制造商。如果有一个c和一个m,它将显示该类别下该制造商的前30个项目,然后如果有超过30个项目,您可以转到下一页,p,等等 这就是我试图实现的目标: index.php?c=Category1变为/Category1 index.php?c=Category1&m=Manuf

我肯定有什么东西可以回答我的问题,但我找不到

简而言之:我想使用.htaccess和mod_rewrite来清理我的URL

目前我有3个可能的变量

c代表类别,m代表制造商,p代表第页

如果只有c,它将显示该类别下所有可能的制造商。如果有一个c和一个m,它将显示该类别下该制造商的前30个项目,然后如果有超过30个项目,您可以转到下一页,p,等等

这就是我试图实现的目标:

index.php?c=Category1变为/Category1 index.php?c=Category1&m=Manufacturer1变为/Category1/Manufacturer1 index.php?c=Category1&m=Manufacturer1&p=1变为/Category1/Manufacturer1/page/1(或Category1/Manufacturer1/1/)

我已经尝试了一些我发现的东西,但我无法将它们转化为我的场景

我试过了

RewriteEngine On
RewriteRule ^(.*) index.php?p=$1

然而

RewriteEngine On
RewriteRule ^page/([^/]+)/?$ index.php?p=$1
工作,但这不是我想要的前2个参数


我需要什么规则?

您可以制定3个单独的规则,或者如果您不关心空白的
$\u GET
变量,请使用可选分组:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /index.php?c=$1&m=$2&p=$3 [L]

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

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


这两个都让我进入404页面。我解决了问题。/before index.php导致了问题,因此我的规则看起来像RewriteRule^([^/]+)/?$index.php?c=$1[L]
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /index.php?c=$1&m=$2&p=$3 [L]

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

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ /index.php?c=$1 [L]
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)(?:/([^/]+)|)(?:/([^/]+)|)/?$ /index.php?c=$1&m=$2&p=$3 [L]