【发布时间】:2009-10-29 15:57:30
【问题描述】:
我在一家公司工作,该公司曾经对您需要注册才能使用的文章的 URL 进行混淆处理。所以他们会有类似的东西
/story.php?story_id=Z_ZXYZ
其中有一些代码将字母映射到数字以计算出真实的故事ID
所以
Z = 0
Y = 1
X = 2
等等
我们现在正在移动技术堆栈,并决定不需要混淆网址。所以我正在研究是否可以使用 mod rewrite 对 URL 进行模糊处理
到现在为止
RewriteCond %{REQUEST_URI} ^.*story.php [NC]
RewriteCond %{QUERY_STRING} ^.*story_id=Z_([ZXYWVUTSRQ]*) [NC]
RewriteRule ^.*$ /story/${decryptmap:%1} [L,R=301]
我在 httpd.conf 文件中有一个重写映射
<IfModule mod_rewrite.c>
RewriteMap decryptmap txt:decyrpsdstxt
</IfModule>
有内容
##
## decrypt urls
##
Z 0
X 1
等等。
但它似乎不起作用,即使我在 Rewriterule 中输入了一些文本,所以 RewriteRule ^.*$ /story/${decryptmap:ZXY} [L,R=301] 我得到一个类似 /story/?story_id=Z_ZAD 的网址
有什么明显的我做错了吗?我可以看到这两个条件正在匹配,但地图似乎不起作用。
我是否应该尝试让 mod 重写来做到这一点?我可以重定向到一个相当容易做到这一点的脚本,但这会将重定向代码放在我不喜欢的两个地方。
(我不担心 ?story_id=Z_ZAD,我知道如何摆脱它)
【问题讨论】: