我遇到了一个奇怪的问题,对此我感到很困惑。首先我要说的是,正则表达式不是我的强项。我需要社区的反馈才能开始这项工作。
假如我有以下 URL:
http://example.com/2015-03-25/
我想通过 PHP 文件运行它们。此规则与以下 mod_rewrite 配合使用效果很好:
RewriteRule ^/?([0-9]){4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/(.*)$ show_page.php?page=$3 [NC,L]
但我想将文件夹移动到:
http://example.com/my_pages/2015-03-25/
此规则无效:
RewriteRule ^/my_pages/?([0-9]){4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/(.*)$ show_page.php?page=$3 [NC,L]
此规则也不起作用:
RewriteRule ^my_pages/?([0-9]){4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/(.*)$ show_page.php?page=$3 [NC,L]
我这里遗漏了什么?非常感谢社区的帮助。
更新!
这是我修复该问题的方法:
RewriteRule ^my_pages\/([0-9]){4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/(.*)$ show_page.php?page=$3 [NC,L]
对阵
RewriteRule ^/my_pages/?([0-9]){4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/(.*)$ show_page.php?page=$3 [NC,L]
现在,奇怪的是,在 Apache 2.4 上,正确的语法实际上是。
RewriteRule ^my_pages/?([0-9]){4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/(.*)$ show_page.php?page=$3 [NC,L]
答案1
更新!
这是我修复该问题的方法:
RewriteRule ^my_pages\/([0-9]){4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/(.*)$ show_page.php?page=$3 [NC,L]
对阵
RewriteRule ^/my_pages/?([0-9]){4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/(.*)$ show_page.php?page=$3 [NC,L]
现在,奇怪的是,在 Apache 2.4 上,正确的语法实际上是。
RewriteRule ^my_pages/?([0-9]){4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/(.*)$ show_page.php?page=$3 [NC,L]