htaccess - 类别/子类别/页面

htaccess - Category / Subcategory / Page

我有个小问题:

我的 URL: localhost / cat / Category / Subcategory / Page

示例:localhost/cat/movies/3d/7

代码:

RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)/?$ .php?wq= [NC,L]  ## wq is Category
RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)/([a-z0-9\-]+)/?$ .php?wq=&wsq= [NC,L]  ## wsq is Subcategory / but if no Subcategory and Pagination -> False it must be "&wpq="
RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)/([a-z0-9\-]+)/([a-z0-9\-]+)/?$ .php?wq=&wsq=&wpq= [NC,L]   ## wpq is Pagination

我当前的 htaccess:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([a-z0-9\-]+)/?$ .php [NC,L]

RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)/?$ .php?wq= [NC,L]  ## wq is Category
RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)/([a-z0-9\-]+)/?$ .php?wq=&wsq= [NC,L]  ## wsq is Subcategory / but if no Subcategory and Pagination -> False it must be "&wpq="
RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)/([a-z0-9\-]+)/([a-z0-9\-]+)/?$ .php?wq=&wsq=&wpq= [NC,L]   ## wpq is Pagination

RewriteCond %{REQUEST_METHOD} !POST [NC]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NE]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([\w.-]+)/?$ .php [L]

这在它应该的范围内有效,只有当只输入一个类别(没有子类别)时才会出现问题,然后应该检查参数 2 是否只有数字。

如果只输入数字,则不是子类而是分页参数(那么第二个参数必须是"wsq",不能是"wsq")。

希望你明白我的意思:D

这可以用 Php 完成,但我认为通过 .htaccess 更好?

已经提前谢谢了。

如果我明白了,替换:

RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)/([a-z0-9\-]+)/?$ .php?wq=&wsq= [NC,L]

与:

RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)/(\d+)/?$ .php?wq=&wpq= [NC,L]
RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)/([a-z0-9\-]+)/?$ .php?wq=&wsq= [NC,L]

(\d+)(相当于([0-9]+)([[:digit:]]+))来匹配一个数字。这条新规则更具体,需要位于 之前 您的 "regular" 规则(需要字母 and/or 数字 and/or 破折号)。