3

您好,我在自己的 mvc 中的 htaccess 配置有问题。IDK我做错了什么?我一直有这条消息500:

内部服务器错误

服务器遇到内部错误或配置错误,无法完成您的请求。

请联系服务器管理员 admin@localhost 并告知他们错误发生的时间,以及您所做的任何可能导致错误的事情。

服务器错误日志中可能提供有关此错误的更多信息。

我想让 url 重写为索引。尝试做这样的事情

www.example.com/index.php/controller/method/param

www.example.com/index.php?url=controler

我的 .htaccess 看起来像这样:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l 

RewriteRule ^(.+) index.php?url=$l [QSA,L]

我做错了什么??我阅读了http://httpd.apache.org/docs/current/rewrite/flags.html并做了解释。

4

4 回答 4

4
<IfModule mod_rewrite.c>    
    Options +FollowSymLinks
    RewriteEngine On

    RewriteCond %{REQUEST_URI} !-f
    RewriteCond %{REQUEST_URI} !-d
    RewriteCond %{REQUEST_URI} !-l
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

这个应该有效

http://www.mysite.com/stats

=>

http://www.mysite.com/index.php?url=stats
于 2013-05-01T08:16:55.157 回答
2

您的最后一行有错误:

RewriteRule ^(.+) index.php?url=$l [QSA,L]

它应该是:

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

换句话说,将 $l(字母 el)更改为 $1(数字一)。此外,您可能希望括号后的 $ 关闭该行。

于 2016-04-13T06:31:17.633 回答
1

试试这个:

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?url=$1 [L]
</IfModule>
于 2013-05-01T08:13:54.633 回答
1

如果您的.htaccess隐藏文件位于主根目录中,请检查这些配置指令:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^index\.php/([a-zA-Z0-9_-]+)/method/param$ /index.php?url=$1 [QSA,L]

它会将www.example.com/index.php/ $var /method/param重写为www.example.com/index.php?url= $var但请确保您的.htaccess文件位于主根目录中。

于 2013-05-01T08:17:34.377 回答