.htaccess URL重写问题:添加strany目录并改写指定URL
问题分析与解决方案
核心问题定位
原请求路径https://www.example.com/zitra/munch-edward-vykrik-(1910)-ido-6017指向zitra目录,但你在strany目录的.htaccess中配置规则——该目录的规则只会处理指向strany的请求,原请求根本不会触发这里的规则。同时zitra目录的RewriteEngine off会阻止该目录下的重写逻辑执行,这是规则失效的关键原因。
具体解决方案
方案1:修改zitra目录的.htaccess(推荐)
直接在目标请求所在的zitra目录配置规则,逻辑最直接:
- 打开
/zitra/.htaccess,将RewriteEngine off替换为RewriteEngine On。 - 添加以下重写规则:
RewriteBase /zitra/ RewriteRule ^(.*)-ido-(\d+)$ strany/jedenobraz.php?id=$2 [L]
- 规则说明:
^(.*)-ido-(\d+)$:匹配zitra目录下所有以-ido-数字结尾的路径;strany/jedenobraz.php?id=$2:将请求重定向到目标文件,$2捕获路径末尾的数字ID;[L]:标记为最后一条规则,停止后续重写处理。
方案2:在根目录.htaccess中添加规则(无需修改zitra配置)
如果无法修改zitra目录的.htaccess,可以利用根目录的规则优先级(在zitra的RewriteEngine off生效前执行):
在网站根目录的.htaccess中添加以下规则:
RewriteRule ^zitra/(.*)-ido-(\d+)$ zitra/strany/jedenobraz.php?id=$2 [L]
- 规则说明:直接匹配根目录下
zitra子目录的目标路径,重写到strany目录的对应文件,绕过zitra目录的重写限制。
验证注意事项
- 确保
/zitra/strany/jedenobraz.php文件实际存在且权限正常; - 若调试困难,可开启Apache的
rewrite_log查看规则匹配细节。
内容的提问来源于stack exchange,提问作者Petr Pakosta
相关产品推荐
相关产品推荐

