我几乎已经有了 mod_rewrite 规则,但我已经屈服了:)
我需要重写
country/[countryname].php
至
country/[countryname]/
但是,[countryname] 可能有这样的下划线:'south_africa.php',如果有,我想用连字符替换它:'south-africa/'
我还想匹配该国家/地区后面是否有数字:“france03.php”到“france/”
这是我的规则,它几乎就在那里,但即使下划线后面没有第二部分,它仍然添加一个连字符。
RewriteRule ^country/(.*)_(.*?)[0-9]*\.php$ country/$1-$2 [R=301,L]
因此目前“country/south_.php”变为“country/south-/”
有人可以帮我找到拼图中缺失的那一 block 吗?谢谢。
最佳答案
试试这个:
RewriteRule ^country/([^_]*)_([^_]*?)\d*\.php$ country/$1-$2 [R=301,L]
此规则将匹配带有单下划线的网址 - 您需要使用不同的规则来获取更多下划线或没有下划线。
如果您想确保 $2
仅包含字母且不为空,请将 ([^_]*?)
更改为 ([a -zA-Z]+)
.
关于regex - mod_rewrite 将 '_' 替换为 '-',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4144121/