【发布时间】:2015-04-18 15:59:31
【问题描述】:
我的 .htaccess 文件中有这个 sn-p:
RewriteCond %{QUERY_STRING} id=([0-9]+)
RewriteRule ^(20\d\d)/page/([0-9]+)/$ ?yearMeasure=$1&page=$2 [L]
RewriteRule ^(20\d\d)/$ ?yearMeasure=$1 [L]
RewriteRule ^category/([A-Za-z0-9-]+)/page/([0-9]+)/$ ?category=$1&page=$2 [L]
RewriteRule ^category/([A-Za-z0-9-]+)/$ ?category=$1 [L]
RewriteRule ^(20\d\d)/([A-Za-z0-9-]+)/$ ?type=post&year=$1&title=$2 [L,QSA]
但是,当我删除第一行时,网站的行为仍然相同。 URL 仍然保持“干净”。这让我想到了我的问题;这个sn-p中RewriteCond的意义是什么?
此 RewriteCond 影响的唯一 RewriteRule 是:
RewriteRule ^page/([0-9]+)/$ ?page=$1 [L]
...当我尝试访问 /page/2/ 时,它不起作用。
当我将它移到 RewriteCond 上方时,如下所示:
RewriteRule ^page/([0-9]+)/$ ?page=$1 [L]
RewriteCond %{QUERY_STRING} id=([0-9]+)
RewriteRule ^(20\d\d)/page/([0-9]+)/$ ?yearMeasure=$1&page=$2 [L]
RewriteRule ^(20\d\d)/$ ?yearMeasure=$1 [L]
RewriteRule ^category/([A-Za-z0-9-]+)/page/([0-9]+)/$ ?category=$1&page=$2 [L]
RewriteRule ^category/([A-Za-z0-9-]+)/$ ?category=$1 [L]
RewriteRule ^(20\d\d)/([A-Za-z0-9-]+)/$ ?type=post&year=$1&title=$2 [L,QSA]
...一切恢复正常。为什么?
【问题讨论】:
-
每个
RewriteRule都支持特定类型的 URL。如果您提供所有这些案例,那么将更容易理解并建议是否需要RewriteCond。
标签: .htaccess mod-rewrite