我尝试重写一些URL,如下所示,在Apache htaccess中
/xyz-12 ----> /xyz/000012
/xyz-123 ----> /xyz/000123
/xyz-1234 ----> /xyz/001234
/xyz-12345 ----> /xyz/012345
/xyz-123456 ----> /xyz/123456
我看到数字保持不变。
可以在一个重写规则中编写吗?
感谢。
答案 0 :(得分:1)
我不知道直接以某种方式在apache RewriteRule中格式化数字的选项。也许有一些模块可以在Internet的深度范围内提供该功能。但是您当然可以使用简单的重写模块执行以下操作:
RewriteEngine on
RewriteRule ^/?xyz-(\d{2})$ /xyz/0000$1 [L]
RewriteRule ^/?xyz-(\d{3})$ /xyz/000$1 [L]
RewriteRule ^/?xyz-(\d{4})$ /xyz/00$1 [L]
RewriteRule ^/?xyz-(\d{5})$ /xyz/0$1 [L]
RewriteRule ^/?xyz-(\d{6})$ /xyz/$1 [L]
还有一个一般性说明:您应该始终喜欢将此类规则放置在http服务器主机配置中,而不要使用动态配置文件(“ .htaccess”)。这些动态配置文件增加了复杂性,通常是导致意外行为,难以调试的原因,并且确实降低了http服务器的速度。仅当您无法访问真正的http服务器主机配置(阅读:真正便宜的服务提供商)或坚持编写自己的规则的应用程序(这显然是安全的噩梦)时,才提供它们作为最后的选择。