apache - 为什么这个mod不重写触发器?(更新:相对和绝对重写路径)
问题描述
我有这个.htaccess
:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^contact/([a-zA-Z]*)/([0-9]*)/?$ /contact/new.php?unit_id=$2&unit_type=$1 [NC,L]
我已经对照两个在线 htaccess 验证器(一个在这里)对此进行了检查,但看不出它为什么不触发。
尝试的网址:
这将转到 404 页面未找到链接。
但是手动将 URL 设置为
https://morris.website.co.uk/contact/new.php?unit_id=1302&unit_type=ee
工作正常。
位于.htaccess
子文件夹 ( /contact
)中
根文件夹.htaccess
没有任何其他相关的 mod 重写,但它确实设置了错误页面和一些其他全局设置:
ErrorDocument 400 /index.php
ErrorDocument 401 /index.php
ErrorDocument 403 /index.php
ErrorDocument 404 /index.php
Options -Indexes
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Header always set Strict-Transport-Security "max-age=31536000;" "expr=%{HTTPS} == 'on'"
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]
RewriteCond %{REQUEST_URI} !^$
RewriteCond %{REQUEST_URI} !^/
RewriteRule .* - [R=403,L]
- 我尝试将重写行放在根 .htaccess 中,但这并没有改变任何东西。
我确定这很愚蠢,但我就是不明白为什么/contact/.htaccess
会失败?
解决方案
在写问题时;我发现将代码放在根路径 .htaccess
中,然后删除特定文件夹.htaccess
(我之前错过的关键部分)似乎可以解决问题。
看起来特定文件夹.htaccess
不喜欢绝对路径重写。
推荐阅读
- android-studio - 如何在数学的 android 应用程序中实现闪存卡?
- python - 如何更改 python 中的错误消息?
- node.js - npm start 在反应中不起作用,babel_jest
- python - 熊猫将自定义对象列表转换为数据框
- django - 在 django 中显示从模型到 index.html 的数据
- c++ - 共享指针的析构函数和擦除
- algorithm - 如何将 7 插入到这棵 2-3 树中
- angular - Angular Service Worker - 立即检查更新
- sql - 如何比较 BigQuery 中的 DD/MM 日期?
- java - 无法在缓存目录中写入文件