如何让Drupal 8与其他网站共存?解决Cacti安装重定向问题
Drupal与Cacti共存的重定向问题解决
为什么删除.htaccess后问题仍存在?
删除Drupal根目录的.htaccess并不一定能立刻生效,原因可能有这几个:
- Apache已经加载了旧的.htaccess配置,未实时刷新
- Drupal自身缓存了路由规则,还在按旧逻辑处理请求
- 浏览器缓存了之前的重定向响应
- 虚拟主机配置里有全局的重写规则覆盖了.htaccess的变化
具体解决步骤
重启Apache服务
Apache会缓存.htaccess的配置,删除后必须重启让新配置生效,用对应系统的命令:# Debian/Ubuntu系列 sudo systemctl restart apache2 # CentOS/RHEL系列 sudo service httpd restart清理Drupal的路由缓存
Drupal会把路由规则缓存起来,即使.htaccess删了,内部路由逻辑还在生效。可以用两种方式清理:- 用Drush命令:
drush cache:rebuild - 无Drush的话,手动删除
sites/default/files/php/cache下的所有缓存文件,或者登录Drupal后台,到「配置」→「性能」页面点击「清除所有缓存」
- 用Drush命令:
修改Apache虚拟主机配置
很多时候虚拟主机里会全局配置重写规则,把所有非文件/目录的请求导向Drupal的index.php。需要给Cacti目录加例外:
打开你的虚拟主机配置文件(比如/etc/apache2/sites-available/foo.bar.conf或/etc/httpd/conf.d/foo.bar.conf),找到类似下面的重写规则:RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [L]修改成:
RewriteEngine On # 排除Cacti目录的请求 RewriteCond %{REQUEST_URI} !^/cacti/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [L]修改后记得重启Apache。
强制刷新浏览器或用隐私模式访问
浏览器可能缓存了之前的301/302重定向,导致服务器端改了还跳。按Ctrl+Shift+R强制刷新页面,或者用无痕/隐私模式打开https://www.foo.bar/cacti/install。检查Cacti自身的.htaccess
偶尔也可能是Cacti安装目录里的.htaccess搞的鬼,看看/var/www/html/cacti/install下有没有.htaccess文件,如果有且里面有重写规则,暂时重命名或删除试试。
内容的提问来源于stack exchange,提问作者Jon Weinraub
相关产品推荐
相关产品推荐

