我有以下代码可以正常使用
RewriteRule ^articles/([^/\.]+)/?$ articles.php?pid=$1 [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+articles\.php\?pid=([^\s&]+) [NC]
RewriteRule ^ http://www.mydomain.com/articles/%1? [R=301,L]
问题是我有一个分页系统,我将另一个变量发送到我的分页系统页面,看起来像这样
&pageNum_getArticles=1#1
我已经尝试过以下操作,但对我认为的哈希感到困惑
RewriteRule ^articles/([^/\.]+)/?$ articles.php?pid=$1&pageNum_getArticles=$2 [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+articles\.php\?pid=([^\s&]+)&pageNum_getArticles=([^\s&]+) [NC]
RewriteRule ^ http://www.mydomain.com/articles/%1/%2? [R=301,L]
答案 0 :(得分:1)
感谢您的信息。那么有没有解决方案,或者我必须改变寻呼系统?
是
你有两套重写规则可以协同工作。第一个规则采用一个漂亮的URL而没有任何查询字符串,并在内部将其重写为php脚本。第二个规则采用丑陋的PHP脚本URI并重定向浏览器以使用更好看的浏览器。第一组是正确的。但是第二组使用相同的规则来路由到脚本。您需要为分页创建另一个分组,因为$2
不会反向引用任何匹配。
尝试:
# second match here---------------v
RewriteRule ^articles/([^/.]+)/([^/.]+)/?$ articles.php?pid=$1&pageNum_getArticles=$2 [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+articles\.php\?pid=([^\s&]+)&pageNum_getArticles=([^\s&]+) [NC]
RewriteRule ^ http://www.mydomain.com/articles/%1/%2? [R=301,L]
请注意,如果您仍然希望使用不使用分页的规则,则需要使用非分页规则 之后进行分页。
此外,如果由于某种原因你的分页在没有URL片段的情况下不起作用,如果片段总是与分页号相同,你可以将它添加到重定向结束。但你需要一个像faa建议的NE:
RewriteRule ^ http://www.mydomain.com/articles/%1/%2#%2? [R=301,L,NE]