我的www文件夹有以下 .htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
我的api文件夹(在www文件夹内)有以下 .htaccess
RewriteEngine On
RewriteBase /api/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /api/index.php [L]
我想将 www 重定向到非 www 网址,同时保留 index.php 的规则。我尝试了很多事情都没有成功......
我试过的:
https://stackoverflow.com/questions/234723/generic-htaccess-redirect-www-to-non-www
更新 :
我想我可能只需要一系列规则
那是 :
1/ 将 www 重定向到非 www url 并转到 2
2/如果文件不存在 -> 重定向到 index.php
RewriteEngine On
RewriteBase
%% Here redirect www to non www url %%
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
从您在评论中所说的内容来看,似乎不需要维护两个单独的
.htaccess
文件。在这种情况下,.htaccess
在文档根目录中只维护一个文件会更简单(假设它们是相关的)。我还对您的“api”做出以下假设,这也简化了指令:
/api/<anything>
都应路由到/api/index.php
/api/<file>
. (毕竟它是一个“API”。)然后您可以在根
.htaccess
文件中执行类似以下操作(并完全删除该/api/.htaccess
文件)。RewriteBase
此处不需要该指令。请注意,您应该首先使用 302(临时)重定向进行测试,以避免潜在的缓存问题。在测试之前,您可能需要清除浏览器(和任何中介)缓存。
然而,对此(正如我在评论中提到的)稍微担心的是为对您的
/api/
. 向 API 发出请求的脚本通常不会遵循重定向 - 预计这些请求已经向规范 URL 发出。因此,为这些请求实施重定向可能会破坏这些对非规范主机名的“不正确”API 调用。