4

我是一名新程序员,目前正在学习 php mvc。我正在从头开始构建框架/mvc 系统......现在我面临 .htaccess 的问题。

    example.com = localhost // unable to post question for localhost link

我的应用程序网址是这样的......

        http://example.com/mvc/index.php?go=test //test 是一个控制器的名字

在 .htaccess 的帮助下,我将 url 清理为....

        http://example.com/mvc/test

如果控制器不存在,它会显示一个错误视图,其中包含一些错误消息。

        http://example.com/mvc/doesnotexists
但是如果我在网址中输入“/”(正斜杠)......
        http://example.com/mvc/test/
它显示错误但不加载任何 css 或 js 文件。

我还在 url 中包含了控制器方法...

        http://example.com/mvc/test/viewresult
如果在该控制器中找不到匹配的方法显示错误消息,它会显示但同样的问题...没有 css 或 js。

如果我通过完整的 url,我已经完全加载了 css 和 js

        http://example.com/mvc/index.php?go=doesnotexists/
等等

我已经尝试了几个 .htaccess 规则,但无法让它工作。请提前帮助和感谢.. 我当前的 .htaccess 代码...

<IfModule mod_rewrite.c>  

    # Turn on 
    RewriteEngine On

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

    #RewriteCond %{REQUEST_URI} !^/assets/
    #RewriteCond $1 !^(favicon\.ico|favicon\.png|media|robots\.txt|crossdomain\.xml|.*\.css|.*\js)

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

   # Generic 404 for anyplace on the site  
   # ...  

</IfModule>  
4

2 回答 2

5

css 和 js 的最佳解决方案是使用完整路径:

http://example.com/mvc/assets/style.css

http://cdn.example.com/style.css

并重写

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php?go=$1

如果您的“测试”是您的控制器,而“参数”是“测试”控制器的操作,您可以使用

http://example.com/mvc/test/param

$_GET['go'] 将是 'test/param' 您需要将其分解以获得 'param' 动作

于 2012-08-16T03:29:12.820 回答
0

确保 html 中的 CSS 文件是绝对路径/assets/mystyle.css而不是相对 assets/mystyle.css路径或../assets/mystyle.css

于 2012-08-16T02:17:31.883 回答