因此,在一些服务器上,.htaccess
按预期工作。我当地有一些问题。
具体情况是.htaccess
包含此内容:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
## path relative to web root
RewriteBase /
RewriteRule ^([a-z0-9_]+)$ index.php?action=$1 [L]
RewriteRule ^([a-z0-9_]+)/([a-zA-Z0-9_]*)/?$ index.php?controller=$1&action=$2&%{QUERY_STRING} [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
还有其他一些行。但评论指出:
## rewrite everything else to index.php
所以我不包括它以避免混淆。
这条路线会发生什么:
http://localhost/index/myaction/?my_id=9
将由此index.php
文件处理:
public function index(){
print_r($_REQUEST);
}
在屏幕上,我看到:
Array ( [my_id] => 9 )
所以似乎&#34;动作&#34; - 参数没有被发送。怎么了?
在httpd.conf
我添加了这个:
<Directory "/appbasepath">
Options FollowSymLinks Multiviews
MultiviewsMatch Any
AllowOverride All
Require all granted
</Directory>
在其他服务器上,&#34; action&#34; -parameter正在传递。
答案 0 :(得分:0)
好的问题解决了。在htaccess和httpd.conf中都存在一些指令冲突。现在我只有
AllowOverride All
Require all granted
它有效。