0

我有一个原始动态网站的静态副本。原始网站的网址是这样的:

http://www.example.com/index.php?module=prodreviews&func=showcontent&id=728

但是,由于我现在拥有网站的静态副本,因此所有网址都有 @ 而不是 ? 和一个 .htm 扩展名。

所以当前的url格式:http ://www.example.com/index.php@module=prodreviews&func=showcontent&id=728.htm

哪些 mod_rewrite 规则会将对旧 URL 结构(URL 中的“?”且没有 .htm 扩展名)的任何请求重定向到新的 URL 格式?我基本上希望通过旧链接访问我网站的任何人都将被带到正确的页面,即使 URL 格式已更改。

我一直在玩写一些规则,但没有骰子。

这是我到目前为止所拥有的,但这只会在任何 URL 上自动添加一个 .htm 扩展名。我仍然需要替换任何带有“?”的 URL 请求。在带有“@”的“php”之后:

Options +FollowSymlinks Options +Indexes RewriteEngine On RewriteBase /
# add .html file extension 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.htm -f 
RewriteRule ^(.+)$ $1.htm [L]
4

1 回答 1

0

您需要将查询字符串作为重写规则目标的一部分:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}@%{QUERY_STRING}\.htm -f
RewriteCond %{QUERY_STRING} ^(.*)$  
RewriteRule ^(.*)$ /$1@%1.htm? [L]
于 2012-07-13T07:47:00.610 回答