我遵循官方yii2文档,其中我们有tutorial,其中显示了如何使用分页与数据库进行交互。一切正常,但当我使用分页小部件转到下一页时,网址从index.php?r=country/index
更改为index.php?r=country%2Findex&page=2
。这让我很困惑:导致从/
转换为%2F
的原因是什么?为什么?此外,如果我将网址编辑为index.php?r=country/index&page=2
,则行为没有变化。
也许这与浏览器/服务器有很大关系(我的是Ubuntu上的Apache2),但我不能说。有人会好好解释一下吗?
答案 0 :(得分:2)
如果您不想要漂亮的网址,那么您至少可以关闭脚本名称:
'urlManager' => [
'enablePrettyUrl' => false,
'showScriptName' => false,
在配置的components
部分。
当您打开漂亮网址时出现的错误是因为您尚未正确配置Apache。
您的网络目录中必须存在.htaccess,并且Apache必须在网站配置中包含Override all
。
Yii2 Installation guide for Apache
编辑: 这是一个新的Yii2应用程序为我提供站点索引操作的URL:
http://yiipository.dev/index.php?r=site%2Findex
这就是Apache - 以及我猜的互联网 - 的运作方式。
所以答案是,不是分页小部件会对您的网址做出无法形容的事情。 :)
EDIT 这可能应该这样做:
<IfModule mod_rewrite.c>
# Enable URL rewriting
RewriteEngine On
# Strip unwanted query strings from the url
# RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^?]*)\?
# RewriteRule (.*) /$1? [R=301,L]
# comment the next line out if you get trouble
# RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php [L]
RewriteCond %{THE_REQUEST} ^.*\/index\.php\ HTTP/
RewriteRule ^(.*)index\.php$ /$1 [R=301,L]
</IfModule>
我不是Apache的专家 - 你怎么会这样? :P
答案 1 :(得分:0)
您可以使用
清除链接或解码%2F
rawurldecode('index.php?r=country%2Findex&page=2');
这将输出到index.php?r=country/index&page=2