Mod_rewrite不适用于所有环境

时间:2017-05-21 17:28:33

标签: php apache .htaccess mod-rewrite

因此,在一些服务器上,.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正在传递。

1 个答案:

答案 0 :(得分:0)

好的问题解决了。在htaccess和httpd.conf中都存在一些指令冲突。现在我只有

AllowOverride All
Require all granted

它有效。