简而言之,我正在尝试更改指定的网址:
http://mydomain.com/category/title/attachment/randomstring_?resolution=320x480
使用
http://mydomain.com/category/title/attachment/randomstring_320x480
实质上,从查询字符串中删除?resolution=
并将值添加到路径中。
类别,标题和randomstring值是动态的,但它们的位置应始终相同。
我不知道这是否重要,但这是在WordPress中使用的。
我尝试了以下内容,但我得到的是404:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^resolution=([0-9]{3,4}x[0-9]{3,4})$
RewriteRule ^$ ${REQUEST_URI}%1/? [R]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
感谢任何帮助;)
答案 0 :(得分:1)
好吧,经过大量的试验和错误(并阅读RewriteLog输出)后,我终于得到了以下内容:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{QUERY_STRING} ^resolution=(.*)$
RewriteRule . %{REQUEST_URI}%1? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
原始解决方案的关键问题:
^$
.
代替RewriteRule
/?
?
代替RewriteRule
,L
旗帜RewriteRule
对于任何好奇的人,包括?
中的RewriteRule
会阻止QUERY_STRING留在请求中。