php - .htaccess 带有空格的重定向网址
问题描述
我正在尝试index.php
通过我的 .htaccess 文件将所有无效的 url 重定向到我的文件。
不幸的是,我不断收到 Apache 错误。
我的 .htaccess 文件
RewriteEngine on
RewriteCond %{REQUEST_URI} !\.(?:css|js|jpe?g|gif|png)$ [NC]
RewriteRule ^([a-zA-Z0-9\-\_\/]*)$ index.php?p=$1
RewriteRule ^([A-Za-z0-9\s]+)$ index.php?p=$1 [L]
这个无效的 url 应该重定向到 index.php:
/vacatures/jobapplication/facility-manager%20qsdf
但它会抛出 object not found 404 Apache 错误。
解决方案
您拥有的允许空格的规则不允许使用连字符。您拥有的允许连字符的规则不允许使用空格。因此,包含两者的任何内容都不会匹配。
您的无效 URLfacility-manager%20qsdf
包括两者。
我的猜测是您RewriteCond
应该适用于这两个规则,但这不是现在发生的事情,它只会适用于RewriteRule
它之后的第一个。RewriteRule
您可以通过仅包含 1并修改它以接受您想要的所有内容来解决所有这些问题:
RewriteRule "^([A-Za-z0-9\-\_\/\s]+)$" index.php?p=$1 [L]
请注意,这需要您的字符类中的至少一个字符,换句话说,当没有路径时(“ http://somewhere.com/ ”),它将与您的“家”位置不匹配。如果您还想匹配该位置,请将 更改+
为 a*
以允许 0 个或多个字符匹配。
推荐阅读
- angular - 如何以角度将对象传递给for循环中的组件
- c# - 比较数据库中的字符串
- ios - 如何让 VoiceOver 忽略不可见的 UICollectionViewCell
- c# - 读取请求的内容 - ReadAsStringAsync()
- swift - 命令 CompileSwift 因非零退出代码而失败
- react-native - Expo SecureStore getItem
- angular - Angular 7 - Visual Studio Code 中的版本控制 Git
- schema - 如何在 avro 模式中声明对象类型的实体
- mysql - 对于期望 '(' 的此服务器版本,选择在此位置无效
- unity3d - Unity - 相机移动后拖动对象