0

我知道有很多关于 htaccess 的问题,但是我尝试了在 Google 和 StackOverFlow 上可以找到的不同代码,但没有一个有效。

我的根目录中有以下内容:

index.php
.htaccess (the one I am trying to write)
controllers
    --index.php
    --mycontroller.php
models
    --mymodel.php
view
    -index.php
    --myview.php

(我正在使用 MAMP&Firefox 在本地主机上工作)

我有的是这个链接

localhost:8888/MySite/controllers/mycontroller.php

我想要的是

localhost:8888/MySite/mycontroller

当我手动输入 url 时,我希望它被重定向到我的 MVC 代码中的正确控制器

我试过这个:

RewriteEngine On
RewriteBase /
RewriteRule ^/(.*)$ /controllers/$1 [L]

当我转到 blabla/controllers/mycontroller.php 时它不会重定向,并且当我手动转到 blabla/mycontroller 时不明白我在问什么。

4

2 回答 2

1

如果您的基地在,/MySite/那么它需要反映RewriteBase

RewriteEngine On
RewriteBase /MySite/

# match against the php filename
RewriteCond %{REQUEST_URI} ^/Mysite/(.*)$

# check to see if the request, routed through controllers actually points to an existing file
RewriteCond %{DOCUMENT_ROOT}/MySite/controllers/%1.php -f

# rewrite
RewriteRule ^(.*)$ controllers/$1.php [L]

这应该对 URI: 进行请求,如果控制器目录中/MySite/foo文件,则将其重写为。/MySite/controllers/foo.php foo.php

于 2012-10-23T21:07:58.593 回答
0

这样做是为了使它工作:

RewriteEngine On
RewriteBase /MySite/

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

RewriteRule ^.*$ controllers/$0.php [L]
于 2012-11-11T00:29:53.160 回答