.htaccess在子目录中不适用于php / mvc

时间:2013-03-03 16:47:06

标签: php .htaccess mod-rewrite

渴望的目标: 在现有网站上,我需要实施一个新网站。新站点需要“暂存”实现,因此创建了“dev”和“test”以及“site”的子目录。除了使用不同的useraccounts和数据库之外,所有三个子目录都包含相同的php / mvc实现。驻留在根目录中的当前站点也应该保持正常工作。

当前配置尝试: 我已将.htaccess文件放在当前网站的根目录中。

RewriteEngine On

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

RewriteRule ^/dev(.*)$ <url>/dev/$1
RewriteRule ^/test(.*)$ <url>/test/$1
RewriteRule ^/site(.*)$ <url>/site/$1

注意:而不是有完整的网址。 这应该将所有包含'dev'的网址重定向到/ dev / $ 1,$ 1包含所有其他参数。

结果: 当调用'test'或'site'的'dev'的主页时。主页显示完美。

问题: 每次我点击菜单项或链接时,生成的网址都会被重写为正确的网址:/ dev / volunteering?page = volunteing&amp; lang = nl

但我收到错误消息404:

The requested URL /dev/volunteering was not found on this server.

请记住,这是关于自定义mvc实现。

必需的帮助: 需要进行哪些更改才能使浏览器理解当前网站不应处理此类请求,但根据“dev”或“test”或“site”,请求应转发到此类请求的相应子目录中。 mvc实现理解的方式?

1 个答案:

答案 0 :(得分:0)

请试试这个:

RewriteEngine On

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

RewriteRule ^(dev)(volunteering([^?]*)) $1/$2?page=$2&lang=nl [L,NC]
RewriteRule ^(test)(volunteering([^?]*)) $1/$2?page=$2&lang=nl [L,NC]
RewriteRule ^(site)(volunteering([^?]*)) $1/$2?page=$2&lang=nl [L,NC]