【发布时间】:2018-09-16 13:34:49
【问题描述】:
好的,所以我到处寻找答案,但这似乎不是其他人遇到的类似问题。
来自 .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
这是没有重写的页面:
我做错了什么?
谢谢! 大卫
【问题讨论】:
-
您的 URL 中有一个冒号 (:),它为您提供 403,但在 RegEx 中没有。另外,我认为您不允许使用冒号。尝试使用另一个字符,例如连字符 (-),看看是否有效。
-
对不起,我发布了错误的重写规则(现在在原始问题中进行了编辑)。是的,我发布的一个是不正确的,但这不是问题。这是我实际使用但仍然失败的规则: RewriteRule ^(.*)-p-(.*).html$ index\.php?main_page=product_info&products_id=$2&%{QUERY_STRING} [L] 如您所见,正则表达式捕获 -p- 之后的所有内容,并且不需要单独列出部分。但是,在我的解决方案中,我需要将它们单独列出,然后重新组合以将其反馈给需要冒号的 PHP。
-
不过,您对冒号的看法是对的,谢谢 - 请看我的回答。
标签: php apache .htaccess mod-rewrite httpd.conf