我不知道如何标题,但这是我的问题。
我正在尝试将多个规则转换为指向一个页面的一条规则。
该网站有一个照片目录,可以使用以下网址结构访问,图像编号必须从零开始:
(插入基本网址)/ photocategoryname / month-01-2014 / image / 1
我想(插入基本网址)/ photocategoryname / month-01-2014 / image / 0自动切换到并加载数据(插入基本网址)/ photocategoryname / month-01-2014 / image / 1
我也想(插入基本网址)/ photocategoryname / month-01-2014 / image-1转换为(插入基本网址)/ photocategoryname / month-01-2014 / image / 1,因为我做了一个URL重新设计,过去我使用image-1而不是image / 1,搜索引擎正在尝试检索旧文件。
我还想处理意外添加额外斜杠的情况。
当我使用此规则集并尝试访问(插入基本URL)/ photocategoryname / month-01-2014 / image-1时,它给了我一个重定向页面,其中新URL为(插入基本URL)/ photocategoryname / month- 01-2014 /图像/ 1 /月-01-2014 /图像-1。
RewriteRule ^(.+)/(.+)-([0-9]+)-([0-9]+)/image-([0-9]+)(/)?$ /$1/$2-$3-$4/image/$5 [NC]
RewriteRule ^(.+)/(.+)-([0-9]+)-([0-9]+)/([0-9]+)(/)?$ /$1/$2-$3-$4/image/$5 [NC]
RewriteRule ^(.+)/(.+)-([0-9]+)-([0-9]+)/([0-9]+)/(.+)$ /$1/$2-$3-$4/image/$5 [NC]
RewriteRule ^(.+)/(.+)-([0-9]+)-([0-9]+)/image/0(/)?$ /$1/$2-$3-$4/image/1 [NC]
RewriteRule ^(.+)/(.+)-([0-9]+)-([0-9]+)/image/([0-9]+)$ /photo.php?TITLE=$1&DATE=$2-$3-$4&PHOTONUMBER=$5 [NC,L]
我想要做的是将重定向最小化到可能1.我在前4条规则中使用[R = 301,NC,L]代替[NC]之前能够使此设置正常工作,但是这导致了太多的重定向,我不希望我的服务器花费资源来处理不必要的重定向。
知道我可能做错了吗?
更新:
这就是我想要实现的目标。
我想允许用户使用以下任意一个网址访问同一页面(照片):
(insert base url)/photocategoryname/month-##-####/image#
(insert base url)/photocategoryname/month-##-####/image/#
(insert base url)/photocategoryname/month-##-####/image-#
(insert base url)/photocategoryname/month-##-####/photo#
(insert base url)/photocategoryname/month-##-####/photo/#
(insert base url)/photocategoryname/month-##-####/photo-#
(insert base url)/photocategoryname/month-##-####/picture#
(insert base url)/photocategoryname/month-##-####/picture/#
(insert base url)/photocategoryname/month-##-####/picture-#
我制作了PHP代码,可以帮助用户重定向到正确的URL:
(insert base url)/photocategoryname/month-##-####/image/#
此旧代码作为重写规则的第二个参数,但仅适用于一个URL。
^(.+)/(.+)-([0-9]+)-([0-9]+)/image/([0-9]+)$
但是这个似乎在服务器上完全被忽略了:
^([^/]+)/([A-Z0-9]+)-([0-9]+)-([0-9]+)/(image|photo|picture|photograph|pic|)(-|/|)([0-9]+)/*$
两行代码都以[NC,L]结尾。
我可能做错了什么?
答案 0 :(得分:0)
之前的方式是正确的,前4行应该有一个R=301
来进行正确的重定向。
这不是一种好的做法,但如果您想在这些不同的网址下提供相同的网页,可以尝试将[NC]
更改为[NC,L]