我正在开发一个以URL作为参数的网页,并希望它能够被搜索引擎轻松编入索引。一个要求是每个URL都显示为目录。
我的脚本格式为:
myscript?url=<a url>&page=1
我想重定向看起来像:
lookup/<a url>/page:1/
URL可以预见会给我带来麻烦......我只想告诉mod_rewrite在“lookup /”之后和“/ page:”之前选择任何。当然,没有什么比这更简单了。
这是现在的重写:
RewriteEngine on
RewriteRule ^/lookup/(.+)/page:([0-9]+)(/?)$ /myscript?url=$1&page=$2 [L]
这很有效,除非在正确编码URL时失败。以“www.google.com/finance”为例。当我将这些URL输入浏览器的地址栏时会发生以下情况:
#this works
lookup/www.google.com/finance/page:1/
#this doesn't work. url is cut off before the ?
lookup/www.google.com/finance?foo=bar/page:1/
#doesn't match rewrite at all!
lookup/www.google.com%2Ffinance/page:1/
我不知道如何做到这一点......不应该(。+)选择任何?我是否需要告诉mod_rewrite以某种方式忽略查询参数?
答案 0 :(得分:0)
试试这个:
RewriteCond %{THE_REQUEST} ^GET\ /lookup/([^\s]+)/page:([0-9]+)/[?\s]
RewriteRule ^/lookup/ /myscript?url=%1&page=%2 [L]
但你应该考虑正确编码嵌入式URL,而不是仅仅猜测它可能会结束的位置。因此/lookup/www.google.com/finance?foo=bar/page:1/
至少应为/lookup/www.google.com/finance%3Ffoo=bar/page:1/
,因此?
是URI路径的一部分,而不是查询的指标。