我问this question关于将旧的“丑陋”链接重写为seo友好链接。
我需要在某些网址中的“尖锐”符号后“提取”一些信息。我已经为它创建了一个正则表达式,但它看起来不起作用。
在我的问题之后,我为此网址创建了此逻辑,例如script.php?mode=full&id=23
:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /script\.php\?mode=full&id=([0-9]+)\ HTTP/
RewriteRule ^script\.php$ fix_old_urls.php?phpfile=script2&id=%1 [NC,L]
但是我正在使用遗留应用程序,我需要在一些页面中的尖锐符号之后提取值,例如url script.php?mode=full#23
:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /script\.php\?mode=list\#([0-9]+)\ HTTP/
RewriteRule ^script\.php$ fix_old_urls.php?phpfile=script&id=%1 [NC,L]
(在fix_old_urls中我使用301代码正确重定向)。
第一个有效,但不是第二个有效。对我而言,两者看起来都是一样的逻辑。我做错了什么?
答案 0 :(得分:10)
锚点信息(以#
开头的部分)从未实际发送到服务器。它完全由浏览器处理,因此您无法使用mod_rewrite触摸它(也无法通过服务器端脚本语言访问它)。唯一可以看到它的是浏览器和客户端脚本(如Javascript)。