URL重写和重定向文件夹

时间:2012-10-23 11:34:49

标签: apache .htaccess redirect url-rewriting

我知道有很多关于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时,它不明白我在问什么。

2 个答案:

答案 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]