我想要任何没有点击现有文件的网址,对其他可能的情况进行查找并查看这些文件是否存在,如果存在,则为302。
如果那是不可能的,那么我对这些妥协感到满意:
例如http://example.com/CoOl/PaTH/CaMELcaSE应重定向到http://example.com/cool/path/camelCase(假设存在后者)。
但当然,完整的解决方案对我和其他人来说更有用
答案 0 :(得分:20)
CheckSpelling on
匹配文件和目录。有关详细信息,请参阅documentation。
答案 1 :(得分:4)
我没有Apache方便测试,但这些规则的某些组合应该做你想要的:
RewriteEngine on RewriteMap lower int:tolower RewriteCond ${lower:%{REQUEST_URI}} -U RewriteRule [A-Z] ${lower:%{REQUEST_URI}} [R=302,L]
我不知道RewriteMap是否可以在条件中应用,或者它是否仅适用于规则。这些内容基于experts exchange accepted answer和a small orange forum discussion。
除非您可以枚举您网站上的每个有效网页,否则您的“理想”解决方案可能无法实现。如果您只有几个有效页面,RewriteMap和文本地图的组合将完全符合您的需求。如果有数百/数千页,您可能需要编写脚本并使用prg
指令。
如果您无法识别每个有效页面,则需要尝试每种变体。将您的URL视为二进制字符串,0表示小写字母,1表示大写字母。仅从您的简单示例中,您必须测试2 ^ 17个变体,128k页。
答案 2 :(得分:0)
查找Apache模块mod_negotiation。它完全符合您的要求: http://httpd.apache.org/docs/2.0/mod/mod_negotiation.html#multiviews
您还可以将所有请求传递给单个PHP文件,并让PHP文件为您进行检查。