我确定有什么东西可以回答我的问题,但我找不到。
简而言之:我想使用.htaccess和mod_rewrite来清理我的网址。
目前我有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 ^([^/]+)/?$ index.php?p=$1
然而
RewriteEngine On
RewriteRule ^page/([^/]+)/?$ index.php?p=$1
有效,但这不是我想要的前两个参数。
我需要什么规则?
答案 0 :(得分:2)
您可以制定3个单独的规则,或者如果您不关心空白$_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]
或
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)(?:/([^/]+)|)(?:/([^/]+)|)/?$ /index.php?c=$1&m=$2&p=$3 [L]