在.htaccess重定向后获取URI的一部分

时间:2014-12-29 08:23:44

标签: php .htaccess mod-rewrite redirect

我是.htaccess的新手,我已经搜索了几天,但找不到适合我情况的解决方案。

基本上我想要的是使用.htaccess重定向请求到子文件夹而不在浏览器地址栏中显示子文件夹。使用以下.htaccess文件,我可以实现它。 (请注意,这是在本地计算机而不是实际的虚拟主机上)

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subfolder/$1
RewriteRule ^(/.*)?$ /subfolder/index.php?rt=$1 [L,QSA]

请注意,我有“rt = $ 1”来从$ _GET []数组获取路由路径信息。但看起来重写弄乱了URL,然后搞砸了我的路由器功能。

例如,.ajax函数的目标UrL是“index / survey_update”,它应该导致indexController-> survey_update()。

但是通过重定向,现在路径变为了 /子文件夹/子文件夹/索引/ survey_update / survey_update。
并且路由器将无法再将其解析为正确的控制器和操作。

任何人都可以让我知道为什么URL看起来很有趣(子文件夹被复制,最后一部分也被复制),有没有办法通过更改提取URL的正确部分(例如,在这种情况下为index / survey_update) .htaccess配置?感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用此规则:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*?)/?$ /subfolder/index.php?rt=$1 [L,QSA]

请注意,RewriteCond仅适用于下一个RewriteRule