相似URL出现错误重定向问题及.htaccess配置求助
解决URL相似时的错误重定向问题
咱们来拆解下你遇到的问题:你当前的.htaccess规则顺序搞反了!那个自动给无后缀URL加.php的规则,会先匹配所有不带点的请求(包括你后面定义的tilaukset这类特定路径),而且它还带了L标记——意思是匹配到就停止后续规则处理,导致后面那些自定义的重写规则根本没机会执行,自然就出现错误重定向了。
给你调整后的.htaccess代码,直接替换你对应的部分就行:
RewriteEngine On RewriteBase /example/ # 先处理特定路径的重写,确保优先匹配自定义规则 RewriteRule ^tilaukset$ home.php?page=orders [NC,L] RewriteRule ^tilaustenhallinta$ home.php?page=ordersManage [NC,L] RewriteRule ^jarjestelmaraportit$ home.php?page=ordersReports [NC,L] RewriteRule ^kaikki-tilaukset$ home.php?page=allOrders [NC,L] RewriteRule ^keskeneraiset-tilaukset$ home.php?page=inProgressorders [NC,L] RewriteRule ^valmiit-tilaukset$ home.php?page=finishedOrders [NC,L] # 补全了你没写完的部分,可根据实际需求修改 # 再处理通用的.php后缀添加,仅处理未被前面规则匹配的请求 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^\.]+)$ $1.php [NC,L]
几个关键调整点说明:
- 规则顺序反转:把特定路径的重写放在最前面,让自定义请求先被匹配处理
- 添加锚定符^$:确保每个特定规则只匹配完全一致的路径,比如
^tilaukset$只会匹配/tilaukset,不会误匹配/tilaukset/或者/tilaukset-xxx这类相似路径 - 每个特定规则加L标记:匹配到自定义路径后就停止后续处理,避免被后面的通用规则再次改写
内容的提问来源于stack exchange,提问作者Jaakko Uusitalo
相关产品推荐
相关产品推荐

