1

我想创建一个这样的网址:http: //domain.com/index.php/hir/2015-02-12/news_title

这是我的 urlmanager 什么不起作用:

 'urlManager'=>array(
    'urlFormat'=>'path',
    'rules'=>array(
        'hir/<date:\d+>/<title:\w+>'=>'news/view',
        '<controller:\w+>/<id:\d+>'=>'<controller>/view',
        '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
        '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
    ),
  ),

这是我的.htaccess:

Options +FollowSymLinks
IndexIgnore */*
<IfModule mod_rewrite.c>
RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
</IfModule>
RewriteEngine on
4

2 回答 2

1

您的 URL 模式几乎是正确的。

<date:\d+>不允许您的日期格式(yyyy-mm-d)。因为你给了 Regex \d,它是 [0-9] 的简写。它不允许 hyphen sign在你的日期字符串中。

因此,更改可以允许您的日期格式的正则表达式。

我可以建议:在你的urlManager<date:[\w-]+>中使用而不是 。<date:\d+>

于 2015-02-16T06:31:47.217 回答
1

不需要 .htacces 文件,你可以通过 url-manager 解决这个问题。只需像这样更改您的第一个 url-manager 规则:

'hir/<date:\d+>/<title:\w+>'=>'news/view' TO 'hir/<date>/<title>'=>'news/view'

我想这会对你有所帮助。

于 2015-02-16T04:57:57.190 回答