我在网上找到了这个解决方案:
RewriteEngine On
RewriteBase /test/
RewriteRule ^([^-]*)/$ index.php?page=$1
RewriteRule ^([^-]*)/([^-]*)/$ index.php?page=$1&link=$2 [L]
#dodaje slash na koncu
RewriteRule ^(([a-z0-9\-]+/)*[a-z0-9\-]+)$ $1/ [NC,R=301,L]
第一个 RewriteRule 很完美地工作了,它返回了
$_GET['page']=130
。但是当涉及到第二个 RewriteRule 时,它返回给我的是 $_GET['page']=index.php
而不是 $_GET['page']=130
和 $_GET['link']=35
。这会导致 SQL 错误,因为页面的数字 ID 是必须的。正常链接看起来像:
?page=136
?page=136&link=35
重写后的链接:
/136/
- 正常工作
/136/35/
- 不正常工作,$_GET['page']=index.php
/130/35
还是/130/35/
?因为你的规则只有在有尾随斜杠时才匹配。 - Justin IurmanRewriteRule ^(([a-z0-9\-]+/)*[a-z0-9\-]+)$ $1/ [NC,R=301,L]
会在结尾添加斜杠。 - RaV