假设我有一个静态应用程序和一个提供它的JSON文件。
问题是JSON文件现在还不可用而且我无法使用它,因此,为了使应用程序在开发环境中运行,我想添加一个重写规则来将JSON请求重定向到CI控制器路径这也会返回一个JSON。
我的htaccess文件看起来像这样
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|assets|static|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
#Rewrite for development
RewriteRule ^static/app/json/appData.json$ /buscador/getAppData
第一个条件是将所有请求重定向到index.php
然后我为JSON文件添加了RewriteRule,该文件将位于static/app/json/appData.json
中,需要将其重定向到CI控制器buscador/getAppData
问题是这个重写规则不起作用,我不知道为什么,有人可以告诉我有什么问题吗?如何在CI中添加自定义重写规则?
谢谢!
答案 0 :(得分:0)
我正在思考类似的问题已经有好几个小时了。我需要添加一个自定义的RewriteRile,以便生成(并且工作)更短的链接,以便作为SMS脚注发送给用户。我终于设法使用301重定向之前 CI重定向。这是我的.htaccess:
Options -Indexes +FollowSymLinks -MultiViews
RewriteEngine on
RewriteBase /
#Custom redirect
RewriteRule ^nv([0-9]+?)?$ /news/locate/item/$1 [NC,L,R=301]
#Remove trailing slash against SEO duplicates
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)/$ /$1 [L,R=301]
#Generic controller redirects
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
现在http://domain.tld/nv1234
按预期重定向到http://domain.tld/news/locate/item/1234
,虽然不像我希望的那样透明,但我找不到更好的方法。
请注意自定义重定向行中的 R = 301 - 如果未将客户端重定向到newsController,则RewriteRule将不起作用。
在此发布我的解决方案,希望其他开发人员不会像我(和OP)那样迷失方向。