我是.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配置?感谢。
答案 0 :(得分:1)
您可以使用此规则:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*?)/?$ /subfolder/index.php?rt=$1 [L,QSA]
请注意,RewriteCond
仅适用于下一个RewriteRule
。