好的,所以我到处寻找答案,但这似乎不是其他人所遇到的类似问题。
来自.htaccess
RewriteRule ^(.*)-p-(.*)\.html$ index\.php?main_page=product_info&products_id=$2&%{QUERY_STRING} [L]
以上规则适用于此网址:
https://www.example.com/seo-page-name-p-341.html
但是这个给了我403错误:
https://www.example.com/seo-page-name-p-341:6662cd9f4515a07efd25ef413b81846f.html
这是没有重写的页面:
我做错了什么?
谢谢! 大卫
答案 0 :(得分:1)
因此,经过进一步的研究,我发现由于NTFS惯例,冒号在Windows版本的Apache上是一个不允许的字符。我改为选择使用加号'+'字符。我只是在购物车软件中重写了相应的PHP输出:
https://www.example.com/seo-page-name-p-341+6662cd9f4515a07efd25ef413b81846f.html
然后,在.htaccess中,我补充道:
RewriteRule ^(.*)-p-([^\+]+)\+(.*)\.html$ index\.php?main_page=product_info&products_id=$2:$3&%{QUERY_STRING} [L]
这会将值拆分并用冒号重新组合,以将其反馈给期望它的PHP。如:
希望我只需要在Windows(测试)服务器上执行此操作,并且在Unix Apache上应该是不必要的,来部署时间。