找不到重写的来源

时间:2019-03-29 11:44:39

标签: apache .htaccess

我正在尝试使用一个稍微复杂的htaccess规则设置一个Apache服务器。我发现了针对单个规则的各种解决方案,但是,当我尝试将整个图片放在一起时,我缺乏使用htaccess使其工作的经验,并且经历了一些奇怪的重写。

规则:

  1. 根目录包含index.php,它将启动一个单页UI应用程序。这意味着应该将URL重写为/index.php
  2. 有一些文件夹应不受规则1(例如,规则1)的限制。 G。如果访问了/admin,则应该显示/admin/index.php,而不是/index.php。
  3. 规则2也适用于服务器上的所有文件(以便UI应用程序可以加载js / css / etc之类的资源)
  4. 所有http://*请求都应重定向到https://*

一些可能相关的详细信息:

  • 服务器已安装LetsEncrypt SSL证书。在安装过程中启用了“从http重定向”功能,我认为它可能创建了一些奇怪的重写规则,因此我导航到etc/apache2/sites-available/lamp-server.conf并注释掉了这三行
#RewriteEngine on
#RewriteCond %{SERVER_NAME} =[DOMAIN]
#RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

这是/.htaccess的相关部分。此文件中没有其他重写/重定向。

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/(wp|admin|phpmyadmin)(/.*)?$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php [QSA]

RewriteCond %{HTTPS} !on
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R]

当我清除浏览器中的缓存时,它似乎可以正常工作一段时间。但是,当我打开服务器的SPA部分时(即,第一个RewriteRule被触发),浏览器会缓存某种重写,然后/admin也开始指向SPA,除非我执行Ctrl+F5每次。

我尝试通过Fiddler 4执行GET请求,那里似乎一切正常。尝试了以下方案:

  • HTTP根-重定向到302。
  • HTTPS根-200 OK。
  • /search SPA页面-得到200 OK,并显示了/index.php作为响应。
  • SPA之外的
  • /admin页-呈现为/admin/index.php作为响应得到200 OK。

在htaccess规则的开发过程中,可能曾经有一次执行301重定向的过程,现在该混乱了我的浏览器缓存。但是,即使我安装了新的浏览器也受到问题的影响,这很奇怪。即使我尝试通过移动设备访问它(以前从未做过,所以没有缓存),也会发生相同的问题。

0 个答案:

没有答案