我知道有很多关于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)
我所拥有的是这个链接
localhost:8888/MySite/controllers/mycontroller.php
我想要的是
localhost:8888/MySite/mycontroller
当我手动输入网址时,我希望将其重定向到我的MVC代码中的右侧控制器
我试过了:
RewriteEngine On
RewriteBase /
RewriteRule ^/(.*)$ /controllers/$1 [L]
当我去blabla / controllers / mycontroller.php时它没有重定向,当我手动转到blabla / mycontroller时,它不明白我在问什么。
答案 0 :(得分: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
个文件。
答案 1 :(得分:0)
这是否使它成功:
RewriteEngine On
RewriteBase /MySite/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ controllers/$0.php [L]