Mat*_*ury 4 php apache .htaccess mod-rewrite apache2
我在重写规则方面遇到了一些麻烦,在谷歌搜索之后,我无处可去.我有一个标准的URL设置重写,如下所示:
RewriteRule ^services/(.*)/ /services/index.php?content=$1 [L]
Run Code Online (Sandbox Code Playgroud)
该站点使用值content来从DB请求相关内容,但只是使URL看起来更漂亮; 标准的东西.这在一定程度上起作用.例如,如果我的URL我们/services/testimonials/规则正常; 内容被加载,页面正常显示.我通过某些URL看到的内容(例如/services/training/)是一个错误说明:
Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0 Fatal error: Unknown: Failed opening required 'redirect:/services/index.php' (include_path='[removed]') in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)
经过大量谷歌搜索和头部敲击(两者都没有什么进展),我发现如果我将URL更改为/services/Training/(注意大写的T),它就可以了.这很快让我想到了URL中的某些冲突(事后我可能应该首先想到).检查哪些URL有效,哪些没有,我连接了点,发现被破坏的URL在子目录中具有与URL相同名称的文件.那句话令人困惑.基本上我不能使用URL,/services/training/因为有一个文件/services/training.php会导致错误的返回.
有一个明显的解决方法是重命名与URL冲突的文件,但在重写规则中是否有一种方法可以让它忽略它可能找到的同名文件?
Options -MultiViews
Run Code Online (Sandbox Code Playgroud)
这应该可以防止url映射到training.php.然而,它不会阻止/services/training.php不映射,但这不是我认为的问题.
| 归档时间: |
|
| 查看次数: |
1342 次 |
| 最近记录: |